在Laravel 4中,我可以使用以下代码创建文本输入:
{{ Form::text('title', '', ['placeholder' => 'Ex. title', 'id' => 'title']) }}
这非常有用,因为如果我的表单的其他字段验证失败,我可以做...
return Redirect::back()->withErrors($validator)->withInput(Input::all());
当表单再次显示时,字段title
将保留之前提交的值。
好东西。
现在我的问题是:输入数组怎么样?
我在表单中添加了以下输入字段:
<input type="text" name="option[]" />
<input type="text" name="option[]" />
<input type="text" name="option[]" />
<input type="text" name="option[]" />
我提交了表单,知道会失败,看看表单何时再次显示,这些字段上的值仍然存在。相反,Laravel抛出异常。
ErrorException
htmlentities()期望参数1为字符串,给定数组
即使我只有一个选项,它仍然会给我同样的错误:
{{ Form::text('option[]') }}
现在,我知道我可以手动处理数组选项的填充,可能是这样的:
$options = Input::get('option');
return Redirect::back()
->withErrors($validator)
->withInput(Input::except('option'))
->with('options', $options);
然后只循环遍历刀片模板上的$ option数组。
是的,这可能会奏效。但这有点像hacky,它仍然错过了Laravel在提交失败后自动填充字段的强大工作流程,就像我回到title
一样。所以我的问题是:
在这些情况下,Laravel 4中是否有内置的方法来处理输入数组?
答案 0 :(得分:0)
如果您为每个输入添加索引,例如:
{{ Form::text('option[1]') }} {{ Form::text('option[2]') }}
它会起作用。
您可以在创建输入的函数vendor\laravel\framework\src\Illuminate\Html\FormBuilder.php
中查看其工作原理