Form Builder
A criação de formulários facilita a criação de formulários HTML rápidos e fáceis de manter. Pense em uma situação em que você define a ação do formulário para uma rota registrada e, quando a definição da rota é alterada, você precisa retornar às visualizações para garantir que sua ação do formulário aponte para a URL correta.
O Form Builder fornece a API para vincular rotas e controladores diretamente aos seus formulários, facilitando a realização de alterações em um só lugar e o mesmo é refletido em suas visualizações.
Exemplo básico
Vamos dar um exemplo de criação de um novo formulário de usuário usando o Form Builder.
// Rota
Route.post('/users', 'UserController.store')<!-- View -->
{{ form.open({action: 'UserController.store'}) }}
{{ csrfField }}
<div class="field">
{{ form.label('username', 'Choose a username') }}
{{ form.text('username') }}
</div>
<div class="field">
{{ form.label('email', 'Enter email address') }}
{{ form.text('email') }}
</div>
<div class="field">
{{ form.label('password', 'Choose a strong password') }}
{{ form.password('password') }}
</div>
<div class="button">
{{ form.submit('Register') }}
</div>
{{ form.close() }}form.open permite que você vincule a ação do controlador de rota, o que significa que se mais tarde você alterar a URL da rota de /users para outra coisa, não precisará fazer alterações dentro da sua visualização, pois ela está vinculada ao controlador.
Abrir/Fechar Formulários
O método form.open pode configurar a ação e o método do formulário usando uma das seguintes propriedades.
action
Buscar ação e método do formulário usando o método do controlador.
{{ form.open({action: 'UserController.update'}) }}
{{ form.close() }}route
Buscar ação e método do formulário usando o nome da rota.
{{ form.open({route: 'users.store'}) }}
{{ form.close() }}url
Defina manualmente uma url e um método de formulário personalizados.
{{ form.open({url: '/users', method: 'POST'}) }}
{{ form.close() }}params
Passando parâmetros de rota como um objeto. As propriedades action e route usarão os parâmetros para formar a URL correta
{{ form.open({ action: 'UserController.update', params: {id: 1} }) }}
{{ form.close() }}Upload de arquivos
Para fazer upload de arquivos usando o construtor de formulários, você precisa definir a propriedade files como true no método open.
{{ form.open({ action: 'UserController.store', files: true }) }}
<div class="field">
{{ form.file('avatar') }}
</div>
{{ form.close() }}Métodos do construtor de formulários
Aqui está a lista de todos os métodos disponíveis na instância do construtor de formulários.
label
{{ form.label('username', 'Enter Username') }}
{{ form.label('username', 'Enter Username', {class: 'label-class'}) }}<!-- Saída -->
<label name="username"> Enter Username </label>text
{{ form.text('username') }}
{{ form.text('username', 'John', {class: 'input'}) }}<!-- Saída -->
<input type="text" name="username" value="John" class="input" />Assim como text, você pode criar campos de entrada para todos os tipos fornecidos.
| Tipo de entrada | Método |
|---|---|
| password | form.password() |
| form.email() | |
| color | form.color() |
| date | form.date() |
| url | form.url() |
| search | form.search() |
| hidden | form.hidden() |
file
Crie um botão de upload de arquivo
{{ form.file('avatar') }}textarea
{{ form.textarea('description') }}
{{ form.textarea('description', value) }}
{{ form.textarea('description', value, {class: 'big'}) }}radio
{{ form.radio('gender', 'male') }}
{{ form.radio('gender', 'female', true) }}checkbox
{{ form.checkbox('terms', 'agree') }}
{{ form.checkbox('terms', 'agree', true) }}select
{{ form.select('countries', ['India', 'US', 'UK'], null, 'Select Country') }}<!-- Saída -->
<select name="countries">
<option value="">Select Country</option>
<option value="India">India</option>
<option value="US">US</option>
<option value="UK">UK</option>
</select>Além disso, você pode passar um objeto de pares chave/valor no lugar do array simples.
{{ form.select('countries', {ind: 'India', us: 'Usa'}) }}<!-- Saída -->
<select name="countries">
<option value="ind">India</option>
<option value="us">US</option>
</select>Você também pode definir opções selecionadas para uma caixa de seleção.
{{ form.select(
'countries',
{ind: 'India', us: 'Usa', uk: 'UK'},
['ind', 'us'],
'Select Country',
{multiple: true}
)
}}<!-- Saída -->
<select name="countries" multiple>
<option value="">Select Country</option>
<option value="ind" selected>India</option>
<option value="us" selected>US</option>
<option value="us">US</option>
</select>selectRange
Crie uma caixa de seleção com múltiplas opções dentro do intervalo fornecido.
{{ form.selectRange('days', 1, 30) }}<!-- Saída -->
<select name="days">
<option value="1">1</option>
<option value="2">3</option>
<option value="3">3</option>
...
</select>submit
{{ form.submit('Create Account', 'create') }}<!-- Saída -->
<input type="submit" name="create" value="Create Account" />button
{{ form.button('Create Account', 'create') }}<!-- Saída -->
<button type="submit" name="create"> Create Account </button>resetButton
{{ form.resetButton('Clear') }}<!-- Saída -->
<button type="reset" name="Clear"> Clear </button>