因此,假设我有一个名为CreateReviewRequest
的自定义请求。
在这个请求中,我有这个方法:
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required_if(auth->logged)',
'comments' => 'required|max:255',
'stars' => 'required|min:1|max:5',
];
}
正如您在name
键中看到的那样,如果他未登录,我希望客户需要填写name
字段。
所以我的问题是,当他是客人时,我怎样才能确切要求我的客户填写name
?
答案 0 :(得分:4)
您可以使用check()
方法:
public function rules()
{
return [
'name' => auth()->check() ? 'required' : '',
'comments' => 'required|max:255',
'stars' => 'required|min:1|max:5',
];
}
答案 1 :(得分:0)
你不能做一个简单的检查吗?
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
if (auth()->check()) {
return [
'comments' => 'required|max:255',
'stars' => 'required|min:1|max:5',
];
}
return [
'name' => 'required',
'comments' => 'required|max:255',
'stars' => 'required|min:1|max:5',
];
}
答案 2 :(得分:0)
仅限会员:
$validator = Validator::make($request->all(), [
'email' => auth()->check() ? '' : 'required|min:5|max:60|email',
]);
仅限访客:
$validator = Validator::make($request->all(), [
'user_id' => auth()->check() ? 'required|integer|min:1' : '',
]);
<强>两个强>
$validator = Validator::make($request->all(), [
'message' => 'required|min:10|max:1000'
]);
<强>结合强>
$validator = Validator::make($request->all(), [
'email' => auth()->check() ? '' : 'required|min:5|max:60|email',
'user_id' => auth()->check() ? 'required|integer|min:1' : '',
'message' => 'required|min:10|max:1000'
]);