Datos de entrada
Laravel facilita el acceso a los datos de entrada del usuario a través de solo unos pocos métodos. No importa el tipo de petición que se haya realizado (POST, GET, PUT, DELETE), si los datos son de un formulario o si se han añadido a la query string, en todos los casos se obtendrán de la misma forma.
Para conseguir acceso a estos métodos Laravel utiliza inyección de dependencias. Esto es simplemente añadir la clase Request
al constructor o método del controlador en el que lo necesitemos. Laravel se encargará de inyectar dicha dependencia ya inicializada y directamente podremos usar este parámetro para obtener los datos de entrada. A continuación se incluye un ejemplo:
En este ejemplo como se puede ver se ha añadido la clase Request
como parámetro al método store
. Laravel automáticamente se encarga de inyectar estas dependencias por lo que directamente podemos usar la variable $request
para obtener los datos de entrada.
Si el método del controlador tuviera más parámetros simplemente los tendremos que añadir a continuación de las dependencias, por ejemplo:
A continuación veremos los métodos y datos que podemos obtener a partir de la variable $request
.
Obtener los valores de entrada
Para obtener el valor de una variable de entrada usamos el método input
indicando el nombre de la variable:
También podemos especificar un valor por defecto como segundo parámetro:
Comprobar si una variable existe
Si lo necesitamos podemos comprobar si un determinado valor existe en los datos de entrada:
Obtener datos agrupados
O también podemos obtener todos los datos de entrada a la vez (en un array) o solo algunos de ellos:
Obtener datos de un array
Si la entrada proviene de un input tipo array de un formulario (por ejemplo una lista de checkbox), si queremos podremos utilizar la siguiente notación con puntos para acceder a los elementos del array de entrada:
JSON
Si la entrada está codificada formato JSON (por ejemplo cuando nos comunicamos a través de una API es bastante común) también podremos acceder a los diferentes campos de los datos de entrada de forma normal (con los métodos que hemos visto, por ejemplo: $nombre = $request->input('nombre');
).
Ficheros de entrada
Laravel facilita una serie de clases para trabajar con los ficheros de entrada. Por ejemplo para obtener un fichero que se ha enviado en el campo con nombre photo
y guardarlo en una variable, tenemos que hacer:
Si queremos podemos comprobar si un determinado campo tiene un fichero asignado:
El objeto que recuperamos con $request->file()
es una instancia de la clase Symfony\Component\HttpFoundation\File\UploadedFile
, la cual extiende la clase de PHP SplFileInfo
(http://php.net/manual/es/class.splfileinfo.php), por lo tanto, tendremos muchos métodos que podemos utilizar para obtener datos del fichero o para gestionarlo.
Por ejemplo, para comprobar si el fichero que se ha subido es válido:
O para mover el fichero de entrada a una ruta determinada:
En la última versión de Laravel se ha incorporado una nueva librería que nos permite gestionar el acceso y escritura de ficheros en un almacenamiento. Lo interesante de esto es que nos permite manejar de la misma forma el almacenamiento en local, en Amazon S3 y en Rackspace Cloud Storage, simplemente lo tenemos que configurar en config/filesystems.php
y posteriormente los podremos usar de la misma forma. Por ejemplo, para almacenar un fichero subido mediante un formulario tenemos que usar el método store
indicando como parámetro la ruta donde queremos almacenar el fichero (sin el nombre del fichero):
Estos métodos devolverán el path hasta el fichero almacenado de forma relativa a la raíz de disco configurada. Para el nombre del fichero se generará automáticamente un UUID (identificador único universal). Si queremos especificar nosotros el nombre tendríamos que usar el método storeAs
:
Otros métodos que podemos utilizar para recuperar información del fichero son:
Last updated