> Faqs > Cómo hacer un envío de formulario con el método PUT en Laravel

Cómo hacer un envío de formulario con el método PUT en Laravel

Estoy programando con rutas de resource (recursos), pero para un sitio web convencional.

Veo que en la documentación de Laravel aparece que las rutas para hacer el "update" se realizan mediante los verbos del HTTP: PUT / PATCH.

Este tipo de rutas creo que solamente se pueden alcanzar desde una llamada Ajax, pero yo quería enviar los datos de un formulario de toda la vida. ¿Es posible hacer esto?

Respuestas

Es cierto que no se puede enviar un formulario HTML común con PUT. Solamente lo puedes enviar por GET o POST, siendo PUT o PATCH un valor inválido en el HTML.

Por eso necesitas usar una directiva de blade llamada @method.

La documentación dice en este punto exactamente, que como no puedes hacer las rutas PUT, PATCH o DELETE puedes añadir un campo oculto (input hidden) llamado "_method" que permite emular esos verbos del HTTP.

La directiva @method de Blade te lo puede hacer por ti mismo:

<form action="/enviar" method="POST">
    @method('PUT')
 
    Aquí pones tu formulario
</form>

Fíjate que el HTML es POST, pero tú le agregas ese campo oculto con @method('PUT') o @method('DELETE'), etc.

Julian
1147 49 87 46
Muchas gracias por la información! funciona perfectamente!