原文地址:LaravelCollectiveForms&HTML安装首先通过composer安装这个包,编辑项目的composer.json文件。在require部分添加laravelcollective/html:"require":{"laravelcollective/html":"5.1.*"}接下来从命令行更新composer:composerupdate-vvv接下来将提供程序添加到config/app中的提供程序数组.php:'providers'=>[//...Collective\Html\HtmlServiceProvider::class,//...],最后在config/app.php中添加链接到别名数组的两个类:'aliases'=>[//...'Form'=>Collective\Html\FormFacade::class,'Html'=>Collective\Html\HtmlFacade::class,//...],createformopenform{!!表格::打开(数组('url'=>'foo/bar'))!!}//{!!Form::close()!!}默认为POST方式,可以自由指定其他接收方式echoForm::open(array('url'=>'foo/bar','method'=>'put'))注意:HTML表单只支持POST和GET方法,PUT和DELETE方法会使用一个隐藏字段_method添加到表单form来欺骗实现你可以使用指定的controller@action或者namedroute来创建表单echoForm::open(array('route'=>'route.name'))echoForm::open(array('action'=>'Controller@method'))也可以给route传递参数.echoForm::open(安排ay('route'=>array('route.name',$user->id)))echoForm::open(array('action'=>array('Controller@method',$user->id)))如果你的表单需要支持文件上传,在数组中添加一个文件配置项。echoForm::open(array('url'=>'foo/bar','files'=>true))CSRFprotectiontoAddingCSRFTokentotheformLaravel提供了一种简单的方法来防止你的应用程序受到跨站攻击.首先,如果您使用Form::open方法并且提交方法是POST、PUT或DELETE,则会在您的会话中生成一个随机令牌,CSRF令牌将自动添加到您表单的隐藏字段中。或者,如果你想自己生成CSRFtoken字段,你可以使用token方法。echoForm::token();将CSRF添加到路由FilterRoute::post('profile',array('before'=>'csrf',function(){//}));表单模型绑定到表单绑定模型通常,您需要从数据库模型中填写表单数据。为此,您可以使用Form::model方法。echoForm::model($user,array('route'=>array('user.update',$user->id)))现在当您自动生成一个表单元素,比如一个文本输入框,Model的值会自动匹配并填充到相关的表单域中。例如,一个名为email的文本输入框将使用用户Model的email属性来填充和设置。当然,还有其他用法。如果具有此名称的字段也存在于会话闪存数据中,这将覆盖模型中的字段值。优先级是这样的:SessionFlashData(OldInput)[sessionflash/oldinputdata]ExplicitlyPassedValue[inputInputvalue]ModelAttributeData[ModelAttributeValue]这可以让您快速使用模型数据创建表单,也可以在服务器验证错误后轻松重新发布表单。注意:使用Form::model方法时,必须使用Form::close来关闭窗体!label生成一个标签元素echoForm::label('email','E-MailAddress');指定额外的html属性echoForm::label('email','E-MailAddress',array('class'=>'awesome'));注意:创建标签后,如果创建的表单元素的name值匹配标签的name值,会自动显示在表单元素中添加id属性进行匹配。id的值是label的name值。Textbox,textfield,password&hiddenfield创建一个文本框echoForm::text('username');指定默认值echoForm::text('email','example@gmail.com');注意:hidden和textarea方法的参数与text相同。生成密码输入框echoForm::password('password',array('class'=>'awesome'));生成其他输入框echoForm::email($name,$value=null,$attributes=array());echoForm::file($name,$attributes=array());多选和单选生成单选和多选echoForm::checkbox('name','value');echoForm::radio('name','value');生成一个带有选中状态的表单元素echoForm::checkbox('name','value',true);echoForm::radio('name','value',true);number生成一个数字输入框echoForm::number('name','value');date生成日期输入框echoForm::date('name',\Carbon\Carbon::now());文件选择器生成文件选择器echoForm::file('image');注意:files参数的值必须设置为true在form下拉列表生成下拉列表echoForm::select('size',array('L'=>'Large','S'=>'小'));生成默认值的下拉列表echoForm::select('size',array('L'=>'Large','S'=>'Small'),'S');生成一个带有空占位符的下拉列表这将创建一个没有值的
