Передача данных из контроллера для просмотра в Laravel

Эй, ребята, я новичок в 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>

Я получаю эту ошибку: Неопределенная переменная: student (View: regprofile.blade.php)

13

Решение

Можешь попробовать?

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);
14

Другие решения

Для передачи одной переменной для просмотра.

Внутри вашего контроллера создайте метод вроде:

function sleep()
{
return view('welcome')->with('title','My App');
}

На вашем маршруте

Route::get('/sleep', 'TestController@sleep');

По вашему мнению Welcome.blade.php, Вы можете повторить вашу переменную как {{ $title }}

Для изменения массива (несколько значений), спите метод для:

function sleep()
{
$data = array(
'title'=>'My App',
'Description'=>'This is New Application',
'author'=>'foo'
);
return view('welcome')->with($data);
}

Вы можете получить доступ к переменной, как {{ $author }},

8

В Laravel 5.6:

$variable = model_name::find($id);
return view('view')->with ('variable',$variable);
1

лучший и простой способ передать одну или несколько переменных для просмотра из контроллера, это использовать компактный () метод.

Для передачи одной переменной для просмотра,
return view("user/regprofile",compact('students'));

Для передачи нескольких переменных для просмотра,
return view("user/regprofile",compact('students','teachers','others'));

И ввиду этого вы можете легко пройти через переменную,

@foreach($students as $student)
{{$student}}
@endforeach

1

Попробуйте с этим кодом:

return View::make('user/regprofile', array
(
'students' => $students
)
);

Или, если вы хотите передать больше переменных в поле зрения:

return View::make('user/regprofile', array
(
'students'    =>  $students,
'variable_1'  =>  $variable_1,
'variable_2'  =>  $variable_2
)
);
0

Вы также можете попробовать это:

    public function showstudents(){
$students = DB::table('student')->get();
return view("user/regprofile", ['students'=>$students]);
}

и используйте эту переменную в вашем файле view.blade, чтобы получить имя ученика и другие столбцы:

    {{$students['name']}}
0

Я думаю, что передавать данные с контроллера для просмотра это плохо. Потому что это не для повторного использования и сделать контроллер толще. Представление должно быть разделено на 2 части: шаблон и помощник (который может получать данные из любого места). Вы можете искать Посмотреть композитора в Laravel иметь больше информации.

-6
По вопросам рекламы [email protected]