如果用户已登录,则需要Laravel验证

时间:2017-01-26 10:29:00

标签: php laravel laravel-validation laravel-request

因此,假设我有一个名为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

3 个答案:

答案 0 :(得分:4)

您可以使用check()方法:

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

答案 1 :(得分:0)

你不能做一个简单的检查吗?

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

答案 2 :(得分:0)

仅限会员:

$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'

]);
相关问题