在使用Zend Framework时,您在哪里放置验证逻辑?

时间:2009-01-05 15:33:21

标签: php zend-framework

我正在寻找人们如何在Zend Framework中实现验证逻辑的一些例子。

我理想的实现方法是将验证保留在控制器之外,并允许验证“确认密码”字段和文件上传。

4 个答案:

答案 0 :(得分:5)

您是否在表单中使用Zend_Form?我倾向于在每个Zend_Form_Element的表单中应用验证器。我就是这样做的:

class Form_Login extends Zend_Form
{
    public function init() {
        $this->setMethod('post');

        $validator = new Zend_Validate_Regex('([A-Za-z0-9]+)');
        $validator->setMessage(
        'Your username can only contain letters, numbers and underscores (_).');

        $username = new Zend_Form_Element_Text('username');
        $username->setLabel('Your Username');
        $username->setDescription('The username you use to login');
        $username->setAllowEmpty(false);
        $username->setRequired(true);
        $username->addValidator($validator);

        $submit = new Zend_Form_Submit('login');
        $submit->setLabel('Login');

        $this->addElements(array($username, $submit));
    }
}

Customising error messages

然后在你的控制器中:

// $form is an instance of the extended Zend_Form
if (!$form->isValid()) {
    $validator->getMessages()
    // flashMessenger helpers or just simple view appends
}
  

我理想的实施方法是将验证保留在控制器之外,并允许验证“确认密码”字段和文件上传

我在参考指南中看到了确认密码验证器的提及(但现在找不到它们,典型的)但是在Google上很容易找到它。

文件上传肯定会要求您write a custom validator

答案 1 :(得分:2)

也许你应该有look at。 Matthew Weier O'Phinney(Zend Fraework核心开发人员之一)展示了一种需要习惯的方法 - 但值得一看。

答案 2 :(得分:0)

是的,这是进行数据验证的推荐方法。谢谢!我想看到更多的例子。

对于HTML来说,我是一个控制狂,所以我试图远离Zend_Form。我知道它可以大量定制,但我记得在某些时候遇到了障碍,所以我决定坚持使用普通的HTML格式。

答案 3 :(得分:0)

特别是对于“确认密码”类型的验证,请查看The Zym Framework(Zend Framework扩展)。它有一个内置的验证器,用于这个目的。试试Zym_Validate_Confirm课程。

相关问题