<!-- app/views/form.blade.php --> {{ Form::open(array('url' => 'our/target/route')) }} {{ Form::close() }}
以上内容将编译为(自动加入 _token
):php
<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')) }}
以上内容将编译为:app
<input name="first_name" type="text" value="Taylor Otwell" id="first_name">
若是有同名的 label
则 id
会自动补完,无需额外定义:post
{{ 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') }}
分组下拉列表:ui
{{ 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', 'me@daylerees.com') }}
{{ 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>'; });
调用方法:url
{{ Form::fullName('my_field') }}
请使用 csrf
前置过滤器:code
// app/routes.php Route::post('/handle-form', array('before' => 'csrf', function() { // Handle our posted form data. }));
注意: 若不使用系统提供的表单起始和结束标签 Form::open()
Form::close()
请手动添加表单 _token
。orm
<form action="{{ url('handle-form') }}" method="POST"> {{ Form::token() }} </form>
还记得第8章中提到的“旧数据的获取方法”吗?
使用系统提供的表单的最大的一个好处,就是系统将自动处理这些旧数据来填充表单。
完美解决了“当用户提交错误,重定向到以前页面时旧数据丢失,表单空白”的问题。而不是单纯的使用JS的“回退”。csrf