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

Adr*_*ore 2 php zend-framework

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

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

Ros*_*oss 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));
    }
}
Run Code Online (Sandbox Code Playgroud)

(自定义错误消息)

然后在你的控制器中:

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

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

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

文件上传肯定会要求您编写自定义验证器.