【问题标题】:Laravel 5.1 Combine Form Request and ValidatorLaravel 5.1 结合表单请求和验证器
【发布时间】:2015-11-07 20:12:38
【问题描述】:

我正在使用表单请求类。工作正常:

class EventFormRequest extends FormRequest
{
   public function rules()
   {
      return [
            'event' => 'required|min:10|max:255',
            'event_description' => 'required|min:3|max:255',
            'url' => 'url',
            'date' => 'required|date',
            'start_time' => 'required',
            'location.street' => 'required|max:255',
            'location.house_number' => 'required|min:1|max:5',
            'location.place' => 'required|max:255'
        ];
   }
}

但是现在,我必须添加更复杂的规则,例如与 Validator 结合使用。在我的 EventFormRequest 类的新 rules() 方法下面:

public function rules()
{
    $v = \Validator::make($this->request->all(),
        [
            'event' => 'required|min:10|max:255',
            'event_description' => 'required|min:3|max:255',
            'url' => 'url',
            'date' => 'required|date',
            'start_time' => 'required',
            'location.street' => 'required|max:255',
            'location.house_number' => 'required|min:1|max:5',
            'location.place' => 'required|max:255'
        ]);

    $v->sometimes('category_id', 'required|numeric', function($input) {
        return $input->event_type == 'known';
    });

    return ($v->fails() ? $v->messages() : []); // validator validates the rules, but returns the messages
}

您会看到,如果事件类型为“已知”,则 category_id 是必需的。在表单请求规则()方法中,我无法从验证器返回应用的规则作为数组(参见示例 1),而只能返回消息()。

我的灵感来自这里:http://laravel.com/docs/5.1/validation#conditionally-adding-rules

【问题讨论】:

    标签: php validation laravel-5


    【解决方案1】:
    class EventFormRequest extends FormRequest
    {
        public function rules()
        {
            $rules = [
                'event' => 'required|min:10|max:255',
                'event_description' => 'required|min:3|max:255',
                'url' => 'url',
                'date' => 'required|date',
                'start_time' => 'required',
                'location.street' => 'required|max:255',
                'location.house_number' => 'required|min:1|max:5',
                'location.place' => 'required|max:255'
            ];
    
            if ($this->request->get('event_type') == 'known') {
                $rules['category_id'] = 'required|numeric';
            }
    
            return $rules;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-11
      • 2016-01-20
      • 2020-12-11
      • 2015-06-09
      • 2015-09-24
      • 2016-09-02
      • 2016-05-16
      • 2016-05-23
      相关资源
      最近更新 更多