如何在我的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',
];
}
}
答案 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 If
或Required Unless
或Requred With