Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Zend Framework时,您将验证逻辑放在哪里?_Php_Zend Framework - Fatal编程技术网

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

Php 使用Zend Framework时,您将验证逻辑放在哪里?,php,zend-framework,Php,Zend Framework,我正在寻找一些人们如何在Zend框架中实现验证逻辑的例子 我的理想实现是将验证保持在控制器之外,并允许验证“确认密码”字段和文件上载。您的表单是否使用Zend_Form?我倾向于在表单中为每个Zend\u form\u元素应用验证器。我就是这样做的: class Form_Login extends Zend_Form { public function init() { $this->setMethod('post'); $validator =

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


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

您的表单是否使用
Zend_Form
?我倾向于在表单中为每个
Zend\u form\u元素
应用验证器。我就是这样做的:

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));
    }
}
()

然后在控制器中:

// $form is an instance of the extended Zend_Form
if (!$form->isValid()) {
    $validator->getMessages()
    // flashMessenger helpers or just simple view appends
}
我的理想实现是将验证保持在控制器之外,并允许验证“确认密码”字段和文件上传

我在参考指南中提到了确认密码验证器(但现在通常找不到),但在谷歌上应该很容易找到


文件上载肯定需要您进行验证。

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


说到HTML,我有点控制狂,所以我尽量远离Zend_表单。我知道它可以大量定制,但我记得在某个时候遇到了障碍,所以我决定坚持使用普通html表单。

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

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

我对Zend_表单的decorators方面有点小麻烦(现在仍然有),但我刚刚学会了通过正确设置dl/dd/dt的样式来克服这个问题:)我遇到了同样的问题,直到我发现这个问题:用HTML编写表单显示,而不是让decorator为您完成工作。