我使用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数组?
答案 0 :(得分:3)
你需要把Input::old()
放在那里:
{{ Form::text('first_name', Input::old('first_name'), array('placeholder' => "e.g. Zoe", 'class' => 'form-control'))}}
所以会发生什么:
Laravel查找任何旧输入,它将用作第一个选项(如果存在验证错误,则使用输入数据重新填充表单。
如果找不到旧的输入,则会恢复为模态数据