簡體   English   中英

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

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM