[英]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.