¿Cómo pasar datos para ver en Laravel?
Estoy pasando datos a mi vista Blade y return View::make('blog', $posts);
en mi vista Blade estoy intentando ejecutar y @foreach ($posts as $post)
termino con un error que dice que $posts
no está definido.
Mi pregunta es ¿cómo se $posts
llamaría la matriz?
Puede pasar datos a la vista utilizando el with
método.
return View::make('blog')->with('posts', $posts);
A partir de Laravel 5, el View::make()
método de fachada de la respuesta aceptada de 2013 ha quedado obsoleto. Pasar datos a la vista ahora se realiza usando la view()
función auxiliar como esta:
return view("blog", ["posts"=>$posts]);
O lo mismo:
return view("blog", compact("posts"));
Esto se puede combinar con el with()
método si se desea:
return view("blog", compact("posts"))->with("message", "Comment posted");
La documentación está disponible aquí .
Si desea pasar solo una variable para ver, puede usar
En controlador
return view('blog')->withTitle('Laravel Magic method.');
En vista
<div>
Post title is {{$title}}.
</div>
Si desea pasar múltiples variables para ver, puede usar
En controlador
return view('blog')->withTitle('Laravel magic method')->withAuthor('Mister Tandon');
En vista
<div>
Post title is {{$title}}.Author Name is {{$author}}
</div>
También puede pasar una matriz como segundo argumento después del nombre de la plantilla de vista, en lugar de encadenar un montón de ->with()
métodos.
return View::make('blog', array('posts' => $posts));
O, si estás usando PHP 5.4 o superior, puedes usar la sintaxis de matriz "corta" mucho más agradable:
return View::make('blog', ['posts' => $posts]);
Esto es útil si desea calcular la matriz en otro lugar. Por ejemplo, si tiene un montón de variables que cada controlador necesita pasar a la vista y desea combinar esto con una matriz de variables que sea única para cada controlador en particular (usando array_merge
, por ejemplo), puede calcular $variables
(que contiene ¡una matriz!):
return View::make('blog', $variables);
(Hice esto sin pensarlo: avíseme si apareció un error de sintaxis...)