我有这个表格
@extends('index')
@section('main')
<h1>Create a new poll</h1>
{{ Form::model(new Poll, ['route' => 'polls.store', 'class' => 'create-poll']) }}
<div class="gray-box">
{{ Form::label("topic", "Write your poll question") }}
{{ Form::text('topic', '', ['placeholder' => 'Example: What is the best number?', 'id' => 'topic']) }}
</div>
<div class="gray-box">
{{ Form::label(null, "Write the possible answers") }}
{{ Form::text('option[]', null, ['class' => 'option', 'placeholder' => 'Test option']) }}
<input type="button" class="more-options" value="Add another option">
{{-- This will create another option[] input element --}}
</div>
{{ Form::submit() }}
{{ Form::close() }}
@stop
还有更多,但这是重要的部分。基本上它是一个民意调查名称。它有一个主题和至少一个选项。单击按钮,您可以添加更多选项。
这是控制器:
public function store() {
$data = Input::all();
// Validate input
$validator = Validator::make($data, Poll::$rules);
if ($validator->fails())
return Redirect::back()->withErrors($validator)->withInput();
...
这里的问题是WithInput()
会抛出错误:
ErrorException
htmlentities()期望参数1为字符串,给定数组(查看:/home/dbugger/laravelproject/app/views/polls/create.blade.php)
我怀疑是因为我使用数组表单元素,但我不知道为什么或如何,因为当时我甚至没有尝试重新填写表单(失败)提交数据......
答案 0 :(得分:1)
对于Form::text('option[]')...
或Form::checkbox('options[]')...
等分组输入,您需要在控制器中重新排列已发布的数组:
类似的东西:
$optionsInput = Input::get('option');
if(is_array($optionsInput)) {
// process your options, eg like this
foreach($optionsInput as $key => $input) {
$proceededOptionsArray[$key] = $input;
}
}
数组输入的相同规则适用于验证器,然后:
// return it with other `Input`
return Redirect::back()
->withErrors($proceededValidatorArray + $validator)
->withInput($proceededOptionsArray + Input::all());
答案 1 :(得分:0)
{{Form :: text(&#39; option []&#39;,null,[&#39; class&#39; =&gt;&#39;选项&#39;,&#39;占位符& #39; =&gt;&#39;测试选项&#39;])}} 它就像你命名文本字段选项[] ...
一样