本文将介绍 Laravel 框架的 表单与HTML 标签
创建一个表单
{{ Form::open(array('url' => 'foo/bar')) }} // {{ Form::close() }} 或者: {{ Form::open(['action' => 'stuInfo.add','method' =>'POST']) }} // {{ Form::close() }} 或者: {{ Form::open(['route' => ['stuInfo.update',$stuInfo[0]->s_id]]) }} // {{ Form::close() }}
默认情况下,表单使用 POST
方法,您可以很容易使用另一种方法:
echo Form::open(array('url' => 'foo/bar', 'method' => 'put'))
注意: 因为 HTML 表单只支持
POST
和GET
方法,PUT
和DELETE
方法将通过自动添加一个_method
隐藏域到表单的方式进行模拟。
您也可以通过指向命名路由或控制器函数打开一个表单:
echo Form::open(array('route' => 'route.name')) echo Form::open(array('action' => 'Controller@method'))
您同样可以传递路由参数:
echo Form::open(array('route' => array('route.name', $user->id))) echo Form::open(array('action' => array('Controller@method', $user->id)))
如果您的表单需要允许文件上传,请在数组参数中添加一个 files
选项:
echo Form::open(array('url' => 'foo/bar', 'files' => true))
Laravel 提供了一个简单的办法保护您的应用抵御跨域攻击。首先,一个随机的令牌添加在用户的 Session 中。无需劳作,这将自动完成。CSRF 令牌将将自动以隐藏域添加到表单中。如果你希望自己为这个隐藏域产生 HTML 代码,可以使用token
函数:
在表单中手动添加一个 CSRF 令牌
echo Form::token();
在一个路由上附加 CSRF 过滤器
Route::post('profile', array('before' => 'csrf', function() { // }));
经常您希望基于一个模型的内容填充一个表单。可以使用 Form::model
实现这个功能:
打开一个模型表单
echo Form::model($user, array('route' => array('user.update', $user->id)))
现在当您生成一个表单元素,比如一个文本输入框,模型中与此相同名字的的值将被设置为文本框的值。比如,对于一个命名为 email
的文本框,用户模型的email
属性的值将被设为它的值。而且,还有更多。如果在闪存中有符合输入名的值,将优先于模型中的值。所以优先级应该是这个样子:
这将允许我们快速构建表单,不仅能够绑定模型的值,还可以在验证出错的时候轻松地重新填充表单。
注意: 当使用
Form::model
的时候,请确认已使用Form::close
关闭您的表单!
创建一个标签元素
echo Form::label('email', 'E-Mail Address');
指定其他 HTML 属性
echo Form::label('email', 'E-Mail Address', array('class' => 'awesome'));
注意: 创建一个标签元素后,您创建的任何与标签元素同名的表单元素将自动获取一个与名字相同的ID。
创建一个文本框
echo Form::text('username'); echo Form::text('txtName','值',['placeholder' => '请输入姓名']);
指定默认值
echo Form::text('email', '[email protected]');
注意: hidden 和 textarea 方法拥有和 text 方法一样的形式。
创建一个密码框
echo Form::password('password');
创建其他输入框
echo Form::date($name, $value = null, $attributes = array()); echo Form::email($name, $value = null, $attributes = array()); echo Form::file($name, $attributes = array()); echo Form::number($name, $value = null, $attributes = array()); echo Form::search($name, $value = null, $attributes = array()); echo Form::telephone($name, $value = null, $attributes = array()); echo Form::url($name, $value = null, $attributes = array());
创建一个复选框或单选按钮
echo Form::checkbox('name', 'value'); echo Form::radio('name', 'value');
创建一个被选中的复选框或单选按钮
echo Form::checkbox('name', 'value', true); echo Form::radio('name', 'value', true);
创建一个文件上传域
echo Form::file('image');
创建一个下拉列表
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));
创建一个有默认选中值的下拉列表
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'), 'S');
创建一个分组的下拉列表
echo Form::select('animal', array( 'Cats' => array('leopard' => 'Leopard'), 'Dogs' => array('spaniel' => 'Spaniel'), ));
创建一个提交按钮
echo Form::submit('Click Me!');
注意: 需要创建一个按钮吗?尝试使用 button 方法,它拥有和 submit 一样的形式。
自定义一个定制的表单元素的助手函数也被称作为 "macros" 是很简单的事情。这里将展示如何实现。首先,使用一个给定的名字以及一个闭包函数注册一个宏:
注册一个表单宏
Form::macro('myField', function() { return '<input type="awesome">'; });
现在您可以通过它的名字调用这个宏:
调用一个定制的表单宏
echo Form::myField();
本文摘自:Laravel4-中文手册
echo Form::text('txtName','值',['placeholder' => '请输入姓名'])