使用表单请求进行数组验证时出现Laravel 5错误?

时间:2015-07-16 23:04:32

标签: php html forms laravel laravel-5

表单的一部分(字段文本数组)[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为字符串,给定数组(查看:/Applications/MAMP/htdocs/telovendogdl/resources/views/ads/new.blade.php)

这是表单请求中的规则:

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]?

1 个答案:

答案 0 :(得分:0)

我对您的代码没有清晰的认识,但我会尝试帮助您调试代码...首先,您需要向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())

你正试图填补一系列名字[]&amp; contents []而不是字符串..