2016-01-04 2 views
0

У меня есть запрос класса, как показано ниже.Возможно ли иметь несколько правил в одном классе запроса?

class CategoryRequest extends Request 
{ 
    public function response(array $errors){ 
     return \Redirect::back()->withErrors($errors)->withInput(); 
    } 

    public function authorize() 
    { 
     return false; 
    } 

    public function rules() 
    { 
     return [ 
      'Category' => 'required|unique:tblcategory|max:25|min:5' 
     ]; 
    } 
} 

Существует функция правил.

В контроллере существует несколько методов, которые имеют Request в качестве параметра. Большинство из них различаются с точки зрения валидации. Я имею в виду, если я админ. Я могу обновить 4 поля. Если я менеджер, я могу обновить 3, и если я обычный пользователь, я могу обновить 2. Таким образом, проверка будет изменяться в соответствии с ролями.

Возможно ли, чтобы в классе запроса выполнялось несколько правил?

ответ

0

Вы можете использовать здесь любые условия, которые вы хотите, чтобы вы вы могли бы сделать что-то вроде этого:

public function rules() 
{ 
    $rules = []; 
    if (Auth::user()->isAdmin()) { 
     $rules['Category'] = '...'; 
    } 
    elseif (Auth::user()->isManager()) { 
     $rules['Category'] = '...'; 
    }   

    return $rules; 
} 

Конечно, вы должны создать isAdmin и isManager в вашей User модели

+0

Будет ли это что-то как '$ rules [] = 'Category' => 'required | unique: tblcategory | max: 25 | min: 5'; ? – Pankaj

+0

Да, вы можете поставить здесь любые правила, которые вы хотите, такие же, как в вашем примере –

+0

Я пробовал этот '$ rules = []; if (\ Auth :: user() -> RoleID == \ App \ Enumeration \ Role \ RoleType :: Admin) { $ rules [] = 'Category' => 'required | unique: tblcategory | max: 25 | мин: 5' ; } 'и получил ошибку: ** синтаксическая ошибка, неожиданная '=>' (T_DOUBLE_ARROW) ** – Pankaj

Смежные вопросы