Abrir un nuevo formulario HTML

Abrir un nuevo formulario HTML

Problema

Quieres comenzar un formulario.

Sabes que podrías usar el HTML

etiqueta directamente, pero quiero usar la fachada de formulario de Laravel.

Solución

Utilizar el Forma :: Open () método.

Por lo general, esto se hace en una plantilla de cuchilla. Hay varias formas de usar este método.

Usando valores predeterminados

Form :: open ()

El HTML producido es.


Esto inicia un formulario, utilizando el método de publicación, a la URL actual y agregará un Acept-Charset = "UTF-8" al formulario. Además, se agrega una token oculta.

A una URL específica

En lugar de pasar una acción, debe pasar un valor de URL. Esto ocurre en la única forma de argumento :: Open () acepta ... una matriz.

Form :: Open (Array ('url' => 'http: // completo.url/aquí '))

Esto produce el siguiente HTML.


A una ruta

En lugar de pasar la acción, debe pasar un valor de ruta a una de sus rutas nombradas.

Form :: open (array ('ruta' => 'nombrado.ruta'))

Si la ruta no existe, se producirá un error. De lo contrario, el atributo de acción del formulario se convierte en la URL completa de la ruta.


A una acción del controlador

Aquí es donde usas la acción.

Form :: Open (Array ('Action' => 'Controller@Method'))

Si el controlador o el método no existe, se producirá un error. De lo contrario, el atributo de acción del formulario se convierte en la URL completa de la ruta que llamará al controlador y método especificados.


Especificando diferentes métodos

Puede usar métodos que no sean publicar con sus formularios. Pase el 'método' que desee en el argumento de la matriz. Los métodos válidos son 'Get', 'Put', 'Patch', 'Post' o 'Eliminar'.

Form :: Open (Array ('Method' => 'Get'))

Esto producirá el siguiente HTML.

Observe que no hay token? El token no se agrega para obtener métodos.

Vea la discusión en la parte inferior de esta receta sobre cómo Laravel "falla" los métodos que los navegadores no pueden manejar.

Especificar cargas de archivo

Si pasa un 'archivos' => verdadero como uno de los argumentos de la matriz, el formulario será adecuado para las cargas de archivos.

Form :: Open (Array ('files' => verdadero))

El formulario ahora tiene el atributo enctype = "multipart/form-data".

enctype = "multipart/form-data">

Discusión

Cómo los métodos de "falsificaciones" de Laravel no pueden manejar los navegadores.

La mayoría de los métodos de formulario, la mayoría de los navegadores no pueden manejar. Entonces, lo que hace Laravel es hacer el método = "post" y agrega un campo oculto.

Form :: Open (Array ('Method' => 'Put'))

Esto produce lo siguiente.



El marco es lo suficientemente inteligente como para traducir esos campos ocultos y cambiar el tipo de solicitud para que coincida con lo que se desea.