laravel Form :: open和Form :: model有什么区别

时间:2018-12-12 05:22:30

标签: php laravel

1. {{Form::model($message,['route' => ['message.update',$message->id]])}}  
2. {{Form::open(['route' => ['message.update',$message->id]])}}

以上两行之间有什么区别?

我从控制器返回了$message。我在视图中呈现的输入是

{!!Form::text("text",isset($message) ? $message->title : NULL,["class" => "form-control"])!!}

它适用于以上两个语句。

  1. 那么laravel形式绑定的目的是什么?
  2. 我应该如何有效使用它?

2 个答案:

答案 0 :(得分:3)

Form::open()正在打开表单。

Form::model()是表单模型绑定,用于更新删除操作。当您生成表单元素(如文本输入)时,与字段名称匹配的模型值将自动设置为字段值。因此,例如,对于名为email的文本输入,将用户模型的email属性设置为该值。 source

Form::open()

时的示例
{!!Form::text("text",isset($message) ? $message->title : NULL,["class" => "form-control"])!!}

如果您绑定表格Form::model()

{!!Form::text("text",null,["class" => "form-control"])!!}

不需要条件或定义它自动设置的任何变量,例如$message->title

答案 1 :(得分:0)

Form :: model绑定使您可以将表单与应用程序的模型之一关联,并自动:

a)匹配以模型字段命名的输入

b)如果要编辑,则使用现有模型对象的数据填充表单的字段,并使用现有对象

c)用会话数据重新填充表单(例如,如果您在创建对象失败后重定向以显示验证错误

语法:{{ Form::model($modelInstance, ['route'=>'your route','method'=>'']) }}

Form :: Open即{{ Form::open(['route'=>'your-route']) }}允许您自动打开带有隐藏的csrf令牌字段附加的新表单,并使用会话数据重新填充表单(例如,如果您重定向到出现故障对象后显示验证错误)创作