Laravel 如果用户已登录则需要验证
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
?
你不能做个简单的检查吗?
/**
* 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',
];
}
您可以使用check()
方法:
public function rules()
{
return [
'name' => auth()->check() ? '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'
]);
假设我有一个名为 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
?
你不能做个简单的检查吗?
/**
* 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',
];
}
您可以使用check()
方法:
public function rules()
{
return [
'name' => auth()->check() ? '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'
]);