Я новичок в laravel, и я слежу за документацией и несколькими видео, но часами теперь я пытаюсь передать массив из контроллера в представление, но я продолжаю получать эту ошибку в представлении:
Undefined variable: quiz
Это код контроллера:
public function SetQuestions($id) { $query = Quiz::find($id); $quiz = array( 'id' => $query->id, 'noQuestions' => $query->no_questions, 'totalQuizScore' => $query->total_quiz_score ); return View::make('quiz.set-questions')->with($quiz); }
Это маршрут:
Route::resource("/quiz/set-questions/{id}", 'QuizController@SetQuestions');
Это код в представлении:
<?php var_dump($quiz); ?>
На данный момент я просто демпинг данных, чтобы увидеть, изменилось ли значение формы null.
Как описано в документах, метод view принимает два аргумента. Первый – это имя переменной, к которой вы хотите, чтобы она была доступна в представлении, вторая – фактические данные.
return View::make('quiz.set-questions')->with('quiz', $quiz);
Есть еще несколько вариантов
return View::make('quiz.set-questions')->withQuiz($quiz); return View::make('quiz.set-questions', array('quiz'=>$quiz)); return View::make('quiz.set-questions', compact($quiz));
Все они имеют одинаковый результат
Используйте compact
а затем просто вызовите $quiz
на ваш взгляд.
public function SetQuestions($id) { $query = Quiz::find($id); $quiz = array( 'id' => $query->id, 'noQuestions' => $query->no_questions, 'totalQuizScore' => $query->total_quiz_score ); return View::make('quiz.set-questions', compact('quiz')); }
Для Laravel 5 вам нужно сделать что-то подобное.
Route::get('/', function(){ $people = ['John','Joe','Jack']; return view('welcome',compact('people'); });
Если вы передадите $people
вы получите сообщение об ошибке.