简体   繁体   English

Laravel验证要求用户是否登录

[英]Laravel validation require if the user is logged in

So let's say I've got a custom request called CreateReviewRequest . 假设我有一个名为CreateReviewRequest的自定义请求。

In this request, I've got this method: 在此请求中,我得到了以下方法:

/**
 * 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',
    ];
}

As you can see in the name key, I want from the client to be required to fill the name field if he's not logged in. 正如您在name键中看到的那样,如果他未登录,我希望从客户端要求填写该name字段。

So my question is, how can I exactly require my client to fill the name when he's a guest? 所以我的问题是,当客人来宾时,我该如何确切要求客户填写name

You can use check() method: 您可以使用check()方法:

public function rules()
{
    return [
        'name'      => auth()->check() ? 'required' : '',
        'comments'  => 'required|max:255',
        'stars'     => 'required|min:1|max:5',
    ];
}

Can't you make a simple check? 你不能做简单的检查吗?

/**
 * 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',
    ];
}

Member only: 仅限会员:

$validator = Validator::make($request->all(), [

     'email' => auth()->check() ? '' : 'required|min:5|max:60|email',

]);

Guest only: 仅限访客:

$validator = Validator::make($request->all(), [

     'user_id' => auth()->check() ? 'required|integer|min:1' : '',

]);

Both: 都:

$validator = Validator::make($request->all(), [

     'message' => 'required|min:10|max:1000'

]);

Combined: 合并:

$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