Phalcon поддерживает 2 компонента проверки:
Phalcon\Validation\Validator Phalcon\Mvc\Model\Validator
Я не знаю, как использовать их в моей ситуации. У меня есть регистрационная форма:
Я создал регистрационную форму следующим образом:
class RegistrationForm extends \Phalcon\Forms\Form { public function initialize() { $csrf = new \Phalcon\Forms\Element\Hidden('csrf'); $csrf->addValidator(new \Phalcon\Validation\Validator\Identical(array( 'value' => $this->security->getSessionToken(), 'message' => 'CSRF validation failed' ))); $username = new \Phalcon\Forms\Element\Text('username'); $username->addFilter('trim'); $username->addValidator(new PresenceOf(array( 'message' => 'Username is required.', ))); $username->addValidator(new StringLength(array( 'min' => 6, 'messageMinimum' => 'Username must be at least 6 characters.' ))); // ... } }
И это мой контроллер / действие:
class UserController extends \Phalcon\Mvc\Controller { public function registerAction() { $form = new RegistrationForm(); if ($this->request->isPost()) { if ($form->isValid($this->request->getPost())) { // Test only var_dump($this->request->getPost()); exit; } else { // Test only foreach ($form->getMessages() as $message) { echo $message, '<br/>'; } exit; } } $this->view->form = $form; } }
Спасибо за помощь!
Перед отправкой данных в базу данных используется валидатор модели. Часто данные (тип / структура / иерархия) в вашем POST и в вашей модели будут различаться, например, одна форма получает входные данные, относящиеся к двум моделям, оба из которых будут обновляться. Таким образом, после получения данных POST вы хотите проверить, что это действительно так, и при сохранении двух независимых моделей вы также хотите проверить, что они действительны.
У Phalcon есть компонент проверки , который является базовым классом для всей проверки. Он работает точно так же, как и проверка формы в вашем коде выше.
Я не большой поклонник того, как весь бизнес валидации внедрен в Phalcon – он не дает вам контроля уровня зерна и существует сильная зависимость между валидацией и валидаторами. Тем не менее, он отлично работает в области проверки формы и модели. Нет аккуратного или аккуратного способа повторного использования одних и тех же валидаторов, но есть некоторые попытки поиска , вы можете использовать свое воображение 🙂
Чтобы реализовать действие вашего регистра, вы должны использовать только средство проверки формы, чтобы отфильтровать ввод пользователя. Возможно, я ошибаюсь, но модели Phalcon автоматически проверяют данные на основе метаданных в полях, поэтому все, что вам нужно беспокоиться, это ваш POST-вход. Большая работа с документами моделей охватывает этот предмет подробно, я уверен, что вы уже были там.