COMO PASAR VARIABLES DEL CONTROLADOR A LA PLANTILLA EN LARAVEL
En este post explico como pasar variables del controlador a la plantilla en Laravel.- Forma básica: pasar un array directamente:
En la plantilla, o vista, se usarán las variables: "$nombre", "$edad" y "posts".return view('perfil', [ 'nombre' => 'Juan', 'edad' => 30, 'posts' => $posts, ]); - Usando compact: "compact()" es una función nativa de PHP, pero se usa bastantr porque es corta y limpia. Cómo funciona: Se le pasan los nombres de las variables que de controlador que se quieren usar en la vista, y Laravel crea automáticamente el array con esos nombres como keys.
En la vista: "$nombre", "$edad" y "posts". (exactamente los mismos nombres). Ventajas:public function show() { $nombre = 'Juan'; $edad = 30; $posts = Post::all(); return view('perfil', compact('nombre', 'edad', 'posts')); }- Código muy corto.
- Ideal cuando las variables ya tienen el nombre que quiere usar en la vista.
- Súper legible cuando hay muchas variables.
- Usando with() (estilo Laravel puro): Este es el método oficial que muestra la documentación. Devuelve la instancia de la vista, por eso se puede encadenar.
return view('perfil') ->with('nombre', 'Juan') ->with('edad', 30) ->with('posts', $posts);- Se puede cambiar el nombre de la variable fácilmente (->with('usuario', $user)).
- Muy claro cuando se lee el código (se ve qué key va con qué valor).
- Se pueden encadenar tantos with() como se quiera.
- Truco extra: método mágico: Laravel permite esto (funciona porque usa "__call)":
Se convierte automáticamente en with('nombre', ...)) Poca gente lo usa.return view('perfil') ->withNombre('Juan') ->withEdad(30) ->withPosts($posts);