Неопределенная переменная в Blade Laravel - PullRequest
1 голос
/ 13 мая 2019

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

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 на {{ $carousel }}, он говорит, что не найден.Но $data работает отлично.Любая идея?

Неопределенная переменная: карусель (View: /mylaravelproject/resources/views/detail.blade.php)

Ответы [ 7 ]

3 голосов
/ 13 мая 2019

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

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

до

return view('detail', ['data_api' => $data, 'data_carousel' => $carousel]);
1 голос
/ 13 мая 2019

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

Попробуйте вернуть обе переменные одновременно:

return view('detail', [
    'data_api' => $api,
    'data_carousel' => $carousel
]);
1 голос
/ 13 мая 2019

Обновление:

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 второго просмотра.Вот почему вы не можете получить параметры второго вида

1 голос
/ 13 мая 2019

вы возвращаете представление два раза, поэтому в представлении доступно только $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]);

}
0 голосов
/ 13 мая 2019

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

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

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

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

return view('detail', ['carousel' => $carousel,'data' => $data]);
0 голосов
/ 13 мая 2019

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

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'));
}
0 голосов
/ 13 мая 2019

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

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...