Laravel 5.6 incluirá dos nuevas directivas Blade para formularios, @csrf
y @method
.
Went ahead and added both of these for Laravel 5.6 🏄♂️ pic.twitter.com/tLLKVSRSQe
— Taylor Otwell 🏄♂️ (@taylorotwell) December 1, 2017
En Laravel 5.5 se suele hacer lo siguiente en la parte superior de formularios para crear un campo oculto para el token CSRF y la “trampa” del método HTTP a utilizar:
1 2 3 4 5 | <form> {{ csrf_field() }} {{ method_field('PUT') }} <!-- ... --> </form> |
A partir de Laravel 5.6 se podrá hacer de este modo:
1 2 3 4 5 | <form> @method('put') @csrf <!-- ... --> </form> |
Laravel hace que sea simple el proteger nuestros sitios contra ataques CSRF sin tener que añadir ninguna comprobación extra. Sin embargo, para poder enviar un formulario se debe incluir un campo con un token CSRF para verificar que el envío del formulario tenía como origen la propia aplicación y no otro sitio.
Por otro lado, puesto que los formularios HTML no pueden realizar peticiones PUT, PATCH o DELETE, es necesario añadir un campo _method
oculto para simular estos verbos HTTP. Laravel utiliza el campo _method
para redirigir la petición a su acción oportuna.
Estas directivas se incluirán en Laravel 5.6 que se espera a partir de febrero. Aquí está el commit por si se quiere ver el código fuente.
En definitiva estas directivas son más intuitivas y más naturales para recordarlas, sin embargo siempre podremos utilizar los helpers si se prefieren.