php - 有没有简单的方法来禁用 Zend_Form 错误?

标签 php zend-framework zend-form

我正在使用 Zend 框架。对于特定的表单,没有足够的空间来显示表单元素旁边的错误。相反,我希望能够在表单上方显示错误。我想我可以通过将 $form->getErrorMessages() 传递给 View 来完成此操作,但是如何禁止在每个元素中显示错误消息?

最佳答案

上面的提议没有考虑到默认装饰器可能会改变。与其清除装饰器然后重新应用除了不需要的装饰器之外的所有装饰器,最好在表单初始化时禁用不需要的装饰器,例如:

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

        $username = new Zend_Form_Element_Text('auth_username');
        $username->setLabel('Username')
            ->setRequired(true)
            ->addValidator('NotEmpty')
            ->removeDecorator('Errors')
            ->addErrorMessage("Please submit a username.");
    etc.....

然后,无论您在哪里使用表单,您都可以决定如何显示消息(如果您打算将它们与表单分开显示)。当然,如果它们应该是表单的一部分,只需创建一个合适的装饰器并将其添加到上面的表单元素初始化方法中即可。 Here是来自 ZendCasts.com 的关于表单装饰器的一个很好的教程

除了表单本身之外显示消息的示例。

$elementMessages = $this->view->form->getMessages();

// if there actually are some messages
if (is_array($elementMessages)) 
{
    foreach ($elementMessages as $element)
    {
        foreach ($element as $message)
        {
            $this->view->priorityMessenger($message, 'notice');
        }
    }
}

上面使用的 priorityMessenger-helper 可以在这里找到:http://emanaton.com/code/php/zendprioritymessenger

关于php - 有没有简单的方法来禁用 Zend_Form 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993755/

相关文章:

zend-form - 禁用notInArray验证程序Zend Framework 2

unit-testing - Zend 框架 : How to start PHPUnit testing Forms?

php - 如何插入主键第二表

php - "Mysql expects parameter 2 to be integer, string given in"错误类型

php - 如何禁用 302 重定向

php - 如何在通过 Ajax 提交的表单上重新加载验证码?

php - 将 ISO-8859-1 转换为 UTF-8 问题

php - 为什么我检查整数的 if 条件不起作用?

php - 存储用户所需语言的最佳方式

database - 使用 Zend Framework 列出数据库