【发布时间】:2014-09-06 19:20:59
【问题描述】:
在 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 抛出了一个异常。
错误异常
htmlentities() 期望参数 1 是字符串,给定数组
即使我只有 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 中是否有任何内置方式来处理这些情况下的输入数组?
【问题讨论】:
-
I have tried to do this, and I got this error你到底尝试了什么?我可以看到预期的输出,但您是如何尝试实现的? -
正如所写。我添加了一组文本字段,它们是数组“option []”,当对“return Redirect::back()->withErrors($validator)->withInput(Input::all());”做出反应时,这些字段不仅没有被填充,而且 Laravel 抛出了一个错误。我不确定你错过了什么。我把所有相关代码放在那里...
标签: arrays forms laravel laravel-4