php - mvc - laravel tutorial
Pasando datos del controlador para ver en Laravel (7)
Hola chicos, soy nuevo en laravel y he estado tratando de almacenar todos los registros de la tabla ''estudiante'' en una variable y luego pasar esa variable a una vista para poder mostrarlos.
Tengo un controlador - ProfileController y dentro de eso una función:
public function showstudents()
{
$students = DB::table(''student'')->get();
return View::make("user/regprofile")->with(''students'',$students);
}
En mi opinión, tengo este código
<html>
<head></head>
<body> Hi {{Auth::user()->fullname}}
@foreach ($students as $student)
{{$student->name}}
@endforeach
@stop
</body>
</html>
Recibo este error: Variable indefinida: estudiantes (Ver: regprofile.blade.php)
¿Puedes probar esto?
return View::make("user/regprofile", compact(''students'')); OR
return View::make("user/regprofile")->with(array(''students''=>$students));
Si bien, puede establecer múltiples variables como esta,
$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);
En Laravel 5.6:
$variable = model_name::find($id);
return view(''view'')->with (''variable'',$variable);
La mejor y más fácil manera de pasar variables simples o múltiples para ver desde el controlador es usar el método compact () .
Para pasar una sola variable para ver
,
return view("user/regprofile",compact(''students''));
Para pasar múltiples variables para ver
,
return view("user/regprofile",compact(''students'',''teachers'',''others''));
Y a la vista, puede recorrer fácilmente la variable,
@foreach($students as $student) {{$student}} @endforeach
Para pasar una sola variable para ver.
Dentro de su controlador, cree un método como:
function sleep()
{
return view(''welcome'')->with(''title'',''My App'');
}
En su ruta
Route::get(''/sleep'', ''TestController@sleep'');
En tu vista
Welcome.blade.php
.
Puede hacer eco de su variable como
{{ $title }}
Para un cambio de una matriz (valores múltiples), el método de suspensión para:
function sleep()
{
$data = array(
''title''=>''My App'',
''Description''=>''This is New Application'',
''author''=>''foo''
);
return view(''welcome'')->with($data);
}
Puede acceder a su variable como
{{ $author }}
.
Prueba con este código:
return View::make(''user/regprofile'', array
(
''students'' => $students
)
);
O si desea pasar más variables a la vista:
return View::make(''user/regprofile'', array
(
''students'' => $students,
''variable_1'' => $variable_1,
''variable_2'' => $variable_2
)
);
Puedes probar esto también:
public function showstudents(){
$students = DB::table(''student'')->get();
return view("user/regprofile", [''students''=>$students]);
}
y use esta variable en su archivo view.blade para obtener el nombre de los estudiantes y otras columnas:
{{$students[''name'']}}
public function showstudents() {
$students = DB::table(''student'')->get();
return (View::make("user/regprofile", compact(''student'')));
}