Laravel:使用选项绑定到输入的表单模型

时间:2014-06-06 04:35:52

标签: php forms twitter-bootstrap laravel-4

我使用laravel的表单模型绑定创建了一个表单。

在表单中,我创建了显示模型信息所需的表单字段。当写出最小的结构时,一切都很好:

{{ Form::model( $user, array('route' => array('users.update', $user->id), 'method' => 'put' )) }}

    {{ Form::label('first_name', "First Name")}}
    {{ Form::text('first_name')}}
...

以这种方式设置,当页面加载时,我的模型中的first_name值会自动填充,就像我期望/想要的那样。

当我尝试为文本输入指定选项时出现问题。我正在使用bootstrap所以我想添加一个form-control类,我还想在输入字段中添加一个占位符。为此,我定义了我的文本输入:

{{ Form::text('first_name',  array('placeholder' => "e.g. Zoe", 'class' => 'form-control'))}} 

请注意,文本值的第二个参数为空。这是因为我希望通过模型绑定输入它而不必添加类似$user->first_name的东西,因为那么模型绑定的重点是什么?

如果我这样离开,我会收到错误,因为Form::text() expects a string for the value,但如果我通过输入以下内容来解决此问题:

{{ Form::text('first_name', '',  array('placeholder' => "e.g. Zoe", 'class' => 'form-control'))}}

然后我得到一个空值,因为我给它一个空白字符串。

有没有办法可以在laravel中使用表单模型绑定来填充值AND仍然传递给我的占位符和类定义的options数组?

1 个答案:

答案 0 :(得分:3)

你需要把Input::old()放在那里:

{{ Form::text('first_name', Input::old('first_name'),  array('placeholder' => "e.g. Zoe", 'class' => 'form-control'))}}

所以会发生什么:

  1. Laravel查找任何旧输入,它将用作第一个选项(如果存在验证错误,则使用输入数据重新填充表单。

  2. 如果找不到旧的输入,则会恢复为模态数据