Laravel 5:基于条件if的表单请求

时间:2016-11-04 03:03:06

标签: laravel

如何在我的rules()方法中应用条件,如请求类似此代码。

public function rules()
{
  if($request->field1 = 'something')
  {
    return [
      'field1' => 'required',
      'field2' => 'required',
    ];
  }else if($request->field1 = 'other something')
  {
    return [
      'field1' => 'required',
      'field2' => 'required',
      'field3' => 'required',
      'field4' => 'required',
    ];
  }

}

3 个答案:

答案 0 :(得分:1)

您可以使用request()辅助函数,它返回当前请求实例或获取输入项:

public function rules()
{
    if (request('field1') == 'something') {
        return [
            'field1' => 'required',
            'field2' => 'required',
        ];
    } else if (request('field1') == 'other something') {
        return [
            'field1' => 'required',
            'field2' => 'required',
            'field3' => 'required',
            'field4' => 'required',
        ];
    }
}

答案 1 :(得分:0)

FormRequest对象是Request的一个实例,因此只需使用$this来获取您正在寻找的值:

public function rules()
{
    if ($this->field1 == 'something') {
        return [
            'field1' => 'required',
            'field2' => 'required',
        ];
    } else if ($this->field1 == 'other something') {
        return [
            'field1' => 'required',
            'field2' => 'required',
            'field3' => 'required',
            'field4' => 'required',
        ];
    }
}

请注意,如果field1未设置为这两个值中的一个(或完全丢失),则上述代码将不会返回任何规则。你来容纳它。

答案 2 :(得分:0)

您可以在案例中使用Laravel内置验证规则Required IfRequired UnlessRequred With