2014-02-12 3 views
0

Обычно я использовал сообщения Zend форма по следующим образом:Zend форма: добавить сообщение к элементу

код в виде:

$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

+0

'$ форма-> getElement ('ELEMENTNAME') -> addError ('Вашего сообщения '); ' –

ответ

0

Поскольку вы обращаетесь сообщения об ошибках от элемента формы. Тогда вы можете попытаться установить сообщение в элементе, используя следующую инструкцию в контроллере:

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

Затем вы сможете распечатать сообщение на вашем пути.

+0

Если я использовал эту функцию, данные формы addErrorMessage() не помечены как недействительные. Как я понимаю, addErrorMessage() модифицирует свойство _errorMessages, а $ element-> getMessages() возвращает значение свойства _messages. – Tamara

0

Вы можете использовать markAsError() для маркировки элемента как недопустимое Custom Error Messages
Я думаю, что это будет делать трюк для вас

if($error) 
{ 
    $element->addErrorMessage('Custom Error'); 
    $element->markAsError(); 
} 
Смежные вопросы