Вопрос новичка.
Я создал очень простой класс LoginForm в Symfony. Он проверяет, вставил ли пользователь имя пользователя и пароль в поле, и работает ли он должным образом.
// UserLoginForm :: configure()
$this->setWidgets(array(
'username' => new sfWidgetFormInputText(),
'password' => new sfWidgetFormInputPassword(),
));
$this->setValidators(array(
'username' => new sfValidatorString(array('required' => true),
'password' => new sfValidatorString(array('required' => true)
));
// Action :: executeLogin()
$this->loginForm = new UserLoginForm();
if ($request->isMethod('post')) {
$params = $request->getParameter('login');
$this->loginForm->bind($request->getParameter('login'));
if ($this->loginForm->isValid()) {
// ... more code
}
}
Теперь я пытаюсь проверить наличие поля имени пользователя в БД и, если оно не существует, я хочу аннулировать форму . То же самое для пароля: если пара имя пользователя + пароль не существует, но с другим сообщением.
Пытаясь найти решение, которое я искал двумя возможными способами:
В действии:
- запрос в БД,
- проверьте имя пользователя,
- сделать недействительным поле имени пользователя формы (я хочу сообщение об ошибке в полученном HTML),
- то же самое для имени пользователя + проверка пароля
В таком случае, как я могу сделать форму недействительной?
Как обработать сообщение об ошибке в шаблоне?
В классе формы, вызывающем метод isValid ():
- добавить что-то в setValidator ()
- ИЛИ добавить средство проверки почты, которое вызывает частную функцию, которая запрашивает модель
В таком случае, как я могу использовать модель в классе Form?
Какой самый лучший / быстрый подход?
Другие возможности?