Phalcon PHP-表单和模型验证
Phalcon支持2个验证组件:Phalcon PHP-表单和模型验证,php,validation,phalcon,Php,Validation,Phalcon,Phalcon支持2个验证组件: Phalcon\Validation\Validator Phalcon\Mvc\Model\Validator 我不知道如何在我的情况下使用它们。我有一份登记表: csrf 用户名 密码 重复密码 电子邮件 重复电子邮件 提交按钮 我创建了一份登记表,如下所示: class RegistrationForm extends \Phalcon\Forms\Form { public function initialize() {
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;
}
}
类用户控制器扩展\Phalcon\Mvc\Controller
{
公共函数注册表操作()
{
$form=新注册表单();
如果($this->request->isPost()){
如果($form->isValid($this->request->getPost())){
//仅测试
var_dump($this->request->getPost());
出口
}否则{
//仅测试
foreach($form->getMessages()作为$message){
回显$message“
”;
}
出口
}
}
$this->view->form=$form;
}
}
谢谢你的帮助 在将数据发送到数据库之前使用模型验证程序。通常,帖子和模型中的数据(类型/结构/层次结构)会有所不同,例如,一个表单接收与两个模型相关的输入,这两个模型都将更新。因此,在收到POST数据时,您需要检查它是否有效,在保存两个独立的模型时,您还需要检查它们是否有效 Phalcon有一个,它是所有验证的基类。它的工作方式与上面代码中的表单验证完全相同 我不太喜欢整个验证业务是如何在Phalcon中实现的——它没有给你一个粒度级别的控制,而且验证和验证器之间有很强的依赖性。然而,它在形式和模型验证方面做得很好。没有干净整洁的方法可以重复使用相同的验证器,但是,您可以利用您的想象力:) 要实现注册操作,只需使用表单验证程序过滤掉用户输入。我可能错了,但是Phalcon模型会根据字段上的元数据自动验证数据,所以您只需要担心您的POST输入。大型文档详细介绍了这个主题,我相信您已经去过了