2017-01-26 4 views
1

Итак, допустим, у меня есть пользовательский запрос под названием 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, когда он гость?

ответ

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', 
    ]; 
} 
+0

Или прикрепить аутентификации промежуточного пути к методу контроллера. – devk

+0

Присоединение промежуточного ПО auth не позволит гостю получить доступ к маршруту, если я ошибаюсь? – Hammerbot

+0

Вы правы. Это не решило бы проблему OP. Сначала я неправильно понял. – devk

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' 

]); 
Смежные вопросы