在Laravel 5中,表单请求的数组验证错误


In Laravel 5 error in array validation with Form Request?

表单部分(字段文本数组)[1]:

<div id="cp1">
    <div class="form-group">
        {!! Form::text('names[]',null,['class'=>'form-control', 'maxlength'=>'30', 'placeholder'=>'Name']) !!}
    </div>
    <div class="form-group">
        {!! Form::text('contents[]',null,['class'=>'form-control', 'maxlength'=>'30', 'placeholder'=>'Content']) !!}
    </div>
</div>

当我发送表单时,验证失败:htmlentities()期望参数1是字符串,数组给定(View:/Applications/MAMP/htdocs/telovendogdl/resources/views/ads/new.刀片.php)

这是表单request中的规则:

return ['title' => 'required|min:8|max:100',
            'description' => 'required|min:10|max:1100',
            'price' => 'required|integer|max:15',
            'city_name'=> 'required|max:70',
            'category_id' => 'required|integer',
            'delivery'=> 'max:70',
        ];

这是控制器中的函数:[2]

public function newAdStore(StoreNewAdRequest $request)
    {
        $newAd = new Ad;
        $newAd->user_id = 'Auth::user()->id;
        $newAd->active = 0;
        $newAd->city_name = $request->input('city_name');
        $newAd->category_id = $request->input('category_id');
        $newAd->fill($request->all());
        $newAd->save();
}

,但只有当我发送数组字段的形式[1]失败,当一个删除这个字段全部工作?[2]发生了什么?

我不清楚你的代码,但我会试着帮助你调试你的代码…首先,您需要在StoreNewAdRequest中添加一个规则来处理数组,而不是名称[]和内容[]的字符串:

public function rules()
{
  $rules = [
    'field2' => 'required|...',
    'field3' => 'required|...',
     ....
  ];
  foreach($this->request->get('names') as $key => $val)
  {
    $rules['names.'.$key] = 'required|max:100';
  }
  return $rules;
}

确保你的模型中有正确的可填充参数

注意:问题可能发生在这个阶段

$newAd->fill($request->all())

你正在尝试填充一个名称数组[]&