【发布时间】:2014-06-20 00:07:21
【问题描述】:
Phalcon 支持 2 个验证组件:
Phalcon\Validation\Validator
Phalcon\Mvc\Model\Validator
我不知道如何在我的情况下使用它们。我有一个注册表单:
- csrf
- 用户名
- 密码
- 重复密码
- 电子邮件
- 重复电子邮件
- 提交按钮
我创建了一个注册表如下:
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;
}
}
- 我们什么时候使用模型验证器,反之亦然?
- 我们可以将它们结合起来吗?如何结合?
- 我想知道使用模型和非模型验证器来检查 csrf、相同密码、用户名和电子邮件唯一性来实施此注册操作的正确方法。
感谢您的帮助!
【问题讨论】:
标签: php validation phalcon