tutorial mvc example create application and php laravel model-view-controller laravel-blade views

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''))); }