Zend Form:向元素添加消息

时间:2014-02-12 18:22:32

标签: php zend-framework zend-form zend-form-element

通常我用以下方式使用Zend Form的消息:

表格中的代码:

$element = new Zend_Form_Element_Text('form_resource_type');
$validator = new Zend_Validate_NotEmpty();
$validator->setMessages(
     array('isEmpty' => 'Please choose type of resource')
);
$element->addValidator($validator);
$element->setRequired(true);
$this->addElement($element);

视野中的代码:

<?php foreach($subForm->getElementsAndSubFormsOrdered() as $element):?>
     <?php echo $element?>
     <?php foreach($element->getMessages() as    $errorMsg):?>
         <?php echo $this->escape($errorMsg);?>
    <?php endforeach;?>
<?php endforeach;?>

因此,为了输出错误消息,我使用了getMessages()函数。但是现在在某些情况下(如果字段值的特殊组合)我需要将元素标记为无效并添加自定义错误消息。我尝试使用addError($ message)函数,但它将消息添加到_errorMessages属性,而getMessages输出_messages Zend_Form_Element属性。

我没有找到向_messages属性添加消息的功能。我怎样才能做到这一点?或者我不应该直接使用此属性并更改在视图中输出错误消息的方法?

UPD:

我使用Zend Framework 1.12

2 个答案:

答案 0 :(得分:0)

因为您正在从表单元素访问错误消息。然后,您可以尝试使用控制器中的以下语句在元素中设置消息:

$form->getElement('elementName')->addErrorMessage('custom Message');

然后,您就可以按照自己的方式打印邮件。

答案 1 :(得分:0)

您可以使用markAsError()将元素标记为无效Custom Error Messages
我认为这会为你做到这一点

if($error)
{
    $element->addErrorMessage('Custom Error');
    $element->markAsError();
}