Передача данных с контроллера для просмотра в 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>
Я получаю эту ошибку: Undefined variable: students (View: regprofile.blade.php)
Ответы
Ответ 1
Можете ли вы попробовать,
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);
Ответ 2
Для передачи одной переменной для просмотра.
Внутри вашего контроллера создайте такой метод, как:
function sleep()
{
return view('welcome')->with('title','My App');
}
В вашем маршруте
Route::get('/sleep', '[email protected]');
В вашем представлении Welcome.blade.php
. Вы можете повторить свою переменную как {{ $title }}
Для массива (несколько значений) измените метод спящего режима на:
function sleep()
{
$data = array(
'title'=>'My App',
'Description'=>'This is New Application',
'author'=>'foo'
);
return view('welcome')->with($data);
}
Вы можете получить доступ к переменной, как {{ $author }}
.
Ответ 3
В Laravel 5.6:
$variable = model_name::find($id);
return view('view')->with ('variable',$variable);
Ответ 4
Лучший и простой способ передать одну или несколько переменных для просмотра из контроллера - это использовать метод compact().
Для передачи одной переменной для просмотра,
return view("user/regprofile",compact('students'));
Для передачи нескольких переменных для просмотра,
return view("user/regprofile",compact('students','teachers','others'));
И ввиду этого вы можете легко пройти через переменную,
@foreach($students as $student) {{$student}} @endforeach
Ответ 5
Попробуйте с помощью этого кода:
return View::make('user/regprofile', array
(
'students' => $students
)
);
Или если вы хотите передать больше переменных в представление:
return View::make('user/regprofile', array
(
'students' => $students,
'variable_1' => $variable_1,
'variable_2' => $variable_2
)
);
Ответ 6
Ребята Мне интересно, есть ли способ отправить данные модели с контроллера на какой-то вид без использования return view() → with()?
Ответ 7
Вы можете попробовать это также:
public function showstudents(){
$students = DB::table('student')->get();
return view("user/regprofile", ['students'=>$students]);
}
и используйте эту переменную в файле view.blade, чтобы получить имя ученика и другие столбцы:
{{$students['name']}}
Ответ 8
Когда я передаю более двух переменных, это не будет работать
return view::make('admin/crosstabdata', array(
'variables' => $variables,
'tbHeading' => $tbHead,
'socVal' => $sectionVal
));
Неопределенная переменная: socVal (View: resources/views/admin/crosstabdata.blade.php)
Ответ 9
public function showstudents() {
$students = DB::table('student')->get();
return (View::make("user/regprofile", compact('student')));
}
Ответ 10
попробуйте этот код:
Controller:
-----------------------------
$fromdate=date('Y-m-d',strtotime(Input::get('fromdate')));
$todate=date('Y-m-d',strtotime(Input::get('todate')));
$datas=array('fromdate'=>"From Date :".date('d-m-Y',strtotime($fromdate)), 'todate'=>"To
return view('inventoryreport/inventoryreportview', compact('datas'));
View Page :
@foreach($datas as $student)
{{$student}}
@endforeach
[Link here]
Ответ 11
Я думаю, что передавать данные с контроллера на просмотр плохо. Потому что он не может использоваться повторно и сделать контроллер более толстым. Вид должен быть разделен на 2 части: шаблон и помощник (который может получать данные из любого места). Вы можете найти композицию просмотра в laravel, чтобы получить дополнительную информацию.