<!-- app/views/form.blade.php -->
{{ Form::open(array('url' => 'our/target/route')) }}
{{ Form::close() }}
以上内容将编译为(自动加入 _token
):
<form method="POST" action="http://demo.dev/our/target/route" accept-charset="UTF-8">
<input name="_token" type="hidden" value="83KCsmJF1Z2LMZfhb17ihvt9ks5NEcAwFoRFTq6u">
</form>
{{ Form::open(array(
'url' => 'our/target/route',
'method' => 'GET',
'accept-charset' => 'ISO-8859-1'
)) }}
POST
GET
PUT
DELETE
默认为 POST
。{{ Form::open(array(
'url' => 'our/target/route',
'method' => 'DELETE'
)) }}
{{ Form::open(array(
'url' => 'our/target/route',
'files' => true
)) }}
{{ Form::open(array(
'route' => 'my_route'
)) }}
{{ Form::open(array(
'action' => 'MyController@myAction'
)) }}
{{ Form::label('first_name', 'First Name', array('class' => 'f_class')) }}
以上内容将编译为:
<label for="first_name" class="f_class">First Name</label>
{{ Form::text('first_name', 'Taylor Otwell', array('id' => 'first_name')) }}
以上内容将编译为:
<input name="first_name" type="text" value="Taylor Otwell" id="first_name">
如果有同名的 label
则 id
会自动补完,无需额外定义:
{{ Form::label('first_name', 'First Name') }}
{{ Form::text('first_name', 'Taylor Otwell') }}
{{ Form::label('description', 'Description') }}
{{ Form::textarea(‘description', 'Best field ever!') }}
{{ Form::label('secret', 'Super Secret') }}
{{ Form::password('secret') }}
{{ Form::label('pandas_are_cute', 'Are pandas cute?') }}
{{ Form::checkbox('pandas_are_cute', '1', true) }}
{{ Form::open(array('url' => 'my/route')) }}
{{ Form::label('panda_colour', 'Pandas are?') }}
{{ Form::radio('panda_colour', 'red', true) }} Red
{{ Form::radio('panda_colour', 'black') }} Black
{{ Form::radio('panda_colour', 'white') }} White
{{ Form::close() }}
{{ Form::label('panda_colour', 'Pandas are?') }}
{{ Form::select('panda_colour', array(
'red' => 'Red',
'black' => 'Black',
'white' => 'White'
), 'red') }}
分组下拉列表:
{{ Form::label('bear', 'Bears are?') }}
{{ Form::select('bear', array(
'Panda' => array(
'red' => 'Red',
'black' => 'Black',
'white' => 'White'
),
'Character' => array(
'pooh' => 'Pooh',
'baloo' => 'Baloo'
)
), 'black') }}
{{ Form::label('email', 'E-Mail Address') }}
{{ Form::email('email', '[email protected]') }}
{{ Form::open(array(
'url' => 'my/route',
'files' => true
)) }}
{{ Form::label('avatar', 'Avatar') }}
{{ Form::file('avatar') }}
{{ Form::close() }}
{{ Form::hidden('panda', 'luishi') }}
{{ Form::submit('Save') }}
{{ Form::button('Smile') }}
{{ Form::image(asset('my/image.gif', 'submit')) }}
{{ Form::reset('Clear') }}
// app/macros.php
Form::macro('fullName', function($name)
{
return '<p>Full name: <input type="text" name="'.$name.'"></p>';
});
调用方法:
{{ Form::fullName('my_field') }}
请使用 csrf
前置过滤器:
// app/routes.php
Route::post('/handle-form', array('before' => 'csrf', function()
{
// Handle our posted form data.
}));
注意: 若不使用系统提供的表单起始和结束标签 Form::open()
Form::close()
请手动添加表单 _token
。
<form action="{{ url('handle-form') }}" method="POST">
{{ Form::token() }}
</form>
还记得第8章中提到的“旧数据的获取方法”吗?
使用系统提供的表单的最大的一个好处,就是系统将自动处理这些旧数据来填充表单。
完美解决了“当用户提交错误,重定向到之前页面时旧数据丢失,表单空白”的问题。而不是单纯的使用JS的“回退”。