Zend Framework / Form:错误时未显示自定义元素

时间:2012-11-15 11:38:24

标签: php forms zend-framework error-handling

我添加了一个自定义元素类型来将原始html呈现为表单。另外我做自定义错误处理(突出显示错误的项目并将错误消息添加为工具提示)。

一切正常。除非我的自定义(原始html)元素在自定义错误处理方法捕获验证错误时根本没有显示。

如果表单验证失败,有人知道为什么我的原始html项目会从标记中删除吗?

形式:

class Sample_Form_Process extends Zend_Form
{

    [...]

    public function init()
    {

    [...]

        $this->addElement('rawText', 'spacer', array(
            'value' => '<br class="cl"/><div class="border-bottom"></div>',
        ));

    [...]

    }

    [...]

    public function highlightErrorElements()
    {
        foreach($this->getElements() as $element) {
            if($element->hasErrors()) {
                $element->setAttrib('class', 'error tooltip');
                $element->setAttrib('title', $element->getMessages());
            }
        }
    }
}

ProcessController类:

class Sample_ProcessController extends Zend_Controller_Action
{

    [...]

    public function addAction()
    {

        [...]

        if ($this->getRequest()->isPost()) {

            if ($form->isValid($request->getPost())) {

            [...]

            } else {
                $form->highlightErrorElements();
            }
        }
    }

    [...]

}

用于呈现自定义表单元素的RawText类:

class Zend_Form_Element_RawText extends Zend_Form_Element
{
    public function render(Zend_View_Interface $view = null)
    {
        return $this->getValue();
    }
}

1 个答案:

答案 0 :(得分:1)

您需要将isValid()方法添加到自定义表单元素,以便始终返回true,以便通过验证。

public function isValid($value)
{
    return true;
}