Привет, ребята, я новичок в laravel, и я пытаюсь сохранить все записи таблицы 'student' переменной, а затем передать эту переменную в представление, чтобы я мог их отображать.
У меня есть контроллер – ProfileController и внутри, что функция:
public function showstudents() { $students = DB::table('student')->get(); return View::make("user/regprofile")->with('students',$students); }
На мой взгляд, у меня есть этот код
<html> <head></head> <body> Hi {{Auth::user()->fullname}} @foreach ($students as $student) {{$student->name}} @endforeach @stop </body> </html>
-<html> <head></head> <body> Hi {{Auth::user()->fullname}} @foreach ($students as $student) {{$student->name}} @endforeach @stop </body> </html>
Я получаю эту ошибку: Неопределенная переменная: students (View: regprofile.blade.php)
Можете ли вы дать это попробовать,
return View::make("user/regprofile", compact('students')); OR return View::make("user/regprofile")->with(array('students'=>$students));
В то время как вы можете установить несколько переменных примерно так,
$instructors=""; $instituitions=""; $compactData=array('students', 'instructors', 'instituitions'); $data=array('students'=>$students, 'instructors'=>$instructors, 'instituitions'=>$instituitions); return View::make("user/regprofile", compact($compactData)); return View::make("user/regprofile")->with($data);
Для передачи одной переменной для просмотра.
Внутри вашего контроллера создайте такой метод, как:
function sleep() { return view('welcome')->with('title','My App'); }
В вашем маршруте
Route::get('/sleep', 'TestController@sleep');
В вашем представлении Welcome.blade.php
. Вы можете повторить свою переменную, например {{ $title }}
Для параметра Array (несколько значений) измените метод спящего режима на:
function sleep() { $data = array( 'title'=>'My App', 'Description'=>'This is New Application', 'author'=>'foo' ); return view('welcome')->with($data); }
Вы можете получить доступ к переменной как {{ $author }}
.
Попробуйте с помощью этого кода:
return View::make('user/regprofile', array ( 'students' => $students ) );
Или если вы хотите передать больше переменных:
return View::make('user/regprofile', array ( 'students' => $students, 'variable_1' => $variable_1, 'variable_2' => $variable_2 ) );
Я думаю, что передавать данные с контроллера на просмотр плохо. Потому что он не может использоваться повторно и сделать контроллер более толстым. Вид должен быть разделен на 2 части: шаблон и помощник (который может получать данные из любого места). Вы можете искать композитор в laravel для получения дополнительной информации.