Неопределенная переменная в Blade Laravel

У меня есть это в моем контроллере:

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail', ['data_api' => $data]);
    return view('detail', ['data_carousel' => $carousel]);
}

Но когда я пытаюсь повторить $carousel by {{ $carousel }}, он говорит, что не найден. Но $data работают отлично. Есть идеи?

Undefined variable: carousel (View: /mylaravelproject/resources/views/detail.blade.php)

попробуй {{$data_carousel}}

Sohel0415 13.05.2019 06:24

Все то же самое: «Неопределенная переменная: data_carousel (View: /mylaravelproject/resources/views/detail.blade.php)»

abaykan 13.05.2019 06:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
1 245
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

вы возвращаете вид два раза, поэтому в поле зрения доступен только $data_api,

попробуй это

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();

    return view('detail', ['data_api' => $data, 'data_carousel' => $carousel]);

}
Ответ принят как подходящий

вам нужно изменить оператор двойного возврата на одинарный возврат

return view('detail', ['data_api' => $data]);
return view('detail', ['data_carousel' => $carousel]);

к

return view('detail', ['data_api' => $data, 'data_carousel' => $carousel]);

Решено с помощью return view('detail', ['data_api' => $data, 'data_carousel' => $carousel]); и {{ $data_carousel }}. Спасибо

abaykan 13.05.2019 06:40

Обновлять:

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail', ['data_carousel' => $carousel,'data_api' => $data]);
}

Вы возвращаете два представления с одного и того же контроллера. После первого return выполнение кода останавливается и return второго просмотра не будет. Вот почему вы не можете получить параметры второго вида

Замените свой код следующим:

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail')->with('data_api', $data)->with('data_carousel', $carousel);
}

Вы не можете вернуться из функции два раза и ожидать, что оба действительно что-то вернут. После первого return выполнение функции останавливается.

Вместо этого попробуйте вернуть обе переменные одновременно:

return view('detail', [
    'data_api' => $api,
    'data_carousel' => $carousel
]);

Вам нужно вернуть вид, как показано ниже

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail', compact('data','carousel'));
}

Спасибо за ваш ответ. Мне любопытна разница в представлении возврата, которое я использую, и compact(), которое вы рекомендуете (я использовал его несколько раз, но я действительно не понимаю). Есть ссылки на это?

abaykan 13.05.2019 06:42

@abaykan Функция compact() создает массив из переменных и их значений. и их синтаксис такой compact(var1,var2...)

PHP Hupp Technologies 13.05.2019 06:51

это реально сейчас работает? Вы говорите нам, что получаете

Undefined variable: carousel (View: /mylaravelproject/resources/views/detail.blade.php)

И вы получите это, потому что вы не передаете карусель переменных в свое представление, вы называете свои переменные как data_api и data_carousell

Во-вторых, вы должны передавать свои переменные как ассоциативный массив только в одном предложении, а не в двух вызовах вида, подобных этому.

return view('detail', ['carousel' => $carousel,'data' => $data]);

в моем случае я использую

@if (isset($users))

перед моим foreach, как в этом примере:

                <div class = "form-group" id = "boardAdminUserIdCon">
                    <p><span class = "glyphicon glyphicon-briefcase" aria-hidden = "true"></span> مدیر بورد</p>
                    <select name = "boardAdminUserId" id = "boardAdminUserId" class = "form-control" required = "required">
                        <option value = "">{{ __('auth.CHOOSEYOURADMIN') }}...</option>
                             @if (isset($users))
                                  @foreach($users as $user)
                                        <option value = "{{ $user['id'] }}">{{ $user["name"] }} 
                                        </option>
                                  @endforeach
                             @endif
                    </select>
                </div>

Другие вопросы по теме