2015-03-09 10 views
0

Я новичок в Laravel 5. В принципе у меня есть две таблицы, таблицы пользователей и команд. Я использовал встроенную функцию регистрации и внес изменения в нее. Прежде чем пользователь сможет зарегистрироваться, он должен знать имя команды (раскрывающийся список), где он принадлежит, а также код команды. Если командный код не совпадает с выбранным им именем команды, он просто покажет ошибку проверки. Как я могу ссылаться на ввод (название команды) в правиле проверки кода команды? Я слышал о правиле валидации, но я считаю, что пользовательский вариант является правильным.Laravel 5 custom validation

В моей registrar.php:

public function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'username' => 'required|max:255', 
     'password' => 'required|confirmed|min:6', 
     'firstname' => 'required|max:255', 
     'lastname' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'team_id' => 'required', 
     // 'team_code' => don't know what to put here. 
    ]); 
} 

Я гугле пользовательской проверки Laravel и кажется, что это не для меня достаточно, чтобы понять, как это будет работать. Может ли кто-нибудь помочь мне с этим? Понравилась бы ваша помощь!

ответ

0

Вы можете использовать существует валидатор с расширенным форматом, который позволяет, где положения, и передать ваши team_id, чтобы убедиться, что идентификатор и код существует в том же ряду:

'email' => 'required|email|max:255|unique:users', 
'team_id' => 'required', 
'team_code' => 'exists:teams,code,team_id,' . Input::get('team_id') 

Это будет проверять, что team_code существует таблица команд в строке, где team_id соответствует идентификатору, указанному в качестве ввода.

Вы можете использовать пользовательский валидатор, но я не думаю, что он добавит много для вашего приложения - это не просто часть логики, специфичная для вашего приложения, которая будет повторно использоваться. Любой пользовательский валидатор все равно потребует, чтобы вы добавили team_id от пользователя к строке проверки, которая не является абсолютно чистым подходом.

Возможно, вы даже рассмотрите возможность переноса этой логики на конкретный тип приложения после валидатора - кажется, что цель валидаторов в основном состоит в проверке ввода в отношении некоторых статических условий, чтобы проверить, что это разумно. В предоставляемых валидаторах не так много взаимодействия с базами данных, только exists и unique.

Documentation