[英]Laravel validation require if the user is logged in
假设我有一个名为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
?
您可以使用check()
方法:
public function rules()
{
return [
'name' => auth()->check() ? 'required' : '',
'comments' => 'required|max:255',
'stars' => 'required|min:1|max:5',
];
}
你不能做简单的检查吗?
/**
* 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',
];
}
仅限会员:
$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'
]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.