Abrindo um novo formulário HTML

Abrindo um novo formulário HTML

Problema

Você quer iniciar um formulário.

Você sabe que pode usar o html

tag diretamente, mas quero usar a fachada da forma de Laravel.

Solução

Use o Formulário :: open () método.

Geralmente, isso é feito em um modelo de lâmina. Existem várias maneiras de usar este método.

Usando padrões

Form :: open ()

O HTML produzido é.


Isso inicia um formulário, usando o método post, para o URL atual e adicionará um aceitação-charset = "utf-8" ao formulário. Além disso, um token oculto é adicionado.

Para um URL específico

Em vez de passar uma ação, você deve passar um valor de URL. Isso ocorre na única forma de argumento :: open () aceita… uma matriz.

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

Isso produz o seguinte HTML.


Para uma rota

Em vez de passar a ação, você deve passar um valor de rota para uma de suas rotas nomeadas.

Form :: Open (Array ('rota' => 'nomeado.rota'))

Se a rota não existir, um erro será produzido. Caso contrário, o atributo de ação do formulário se torna o URL completo para a rota.


Para uma ação do controlador

É aqui que você usa ação.

Form :: Open (Array ('Ação' => 'Controller@Method'))

Se o controlador ou método não existir, um erro será produzido. Caso contrário, o atributo de ação do formulário se tornará o URL completo para a rota que chamará o controlador e o método especificados.


Especificando diferentes métodos

Você pode usar métodos que não sejam postagens com seus formulários. Passe o 'método' que você deseja no argumento da matriz. Métodos válidos são 'get', 'put', 'patch', 'post' ou 'excluir'.

Form :: Open (Array ('Método' => 'Get'))

Isso produzirá o seguinte HTML.

Observe que não há token? O token não é adicionado para obter métodos.

Veja a discussão na parte inferior desta receita de como o Laravel "finge" os navegadores de métodos não conseguem lidar.

Especificando uploads de arquivo

Se você passar um 'arquivos' => true como um dos argumentos da matriz, o formulário se tornará adequado para uploads de arquivo.

Form :: Open (Array ('Files' => true))

O formulário agora tem o atributo ENCTYPE = "Multipart/Form-Data".

Enctype = "Multipart/Form-Data">

Discussão

Como os métodos de “falses” de Laravel não podem lidar.

Os métodos de formulário colocados, patches e exclusão não podem ser tratados pela maioria dos navegadores. Então, o que o Laravel faz é fazer o método = ”postar” e adicionar um campo oculto.

Form :: Open (Array ('Método' => 'Put'))

Isso produz o seguinte.



A estrutura é inteligente o suficiente para traduzir esses campos ocultos e alterar o tipo de solicitação para corresponder ao que é desejado.