Ну, это действительно так просто:
$note = new Zend_Form_Element('note');
$note->helper = 'formNote';
$note->setValue('<b>hi</b>');
$form->addElement($note);
Но проблема в том, что когда вы отправляете форму, форма вызывает $note->isValid()
, которая переопределяет значение, поэтому, если в форме есть ошибки, при следующем ее отображении пользовательский HTML не будет отображаться , Есть два простых способа исправить это, первый - переопределить isValid()
в вашем классе Form следующим образом:
public function isValid($data)
{
$note = $this->note->getValue();
$valid = parent::isValid($data);
$this->note->setValue($note);
return $valid;
}
Но лично я нахожу этот хакерский способ и предпочитаю второй вариант. То есть написать очень простой класс (он должен действительно быть частью самого Zend, я понятия не имею, почему это не так, поскольку он включает formNote
помощник вида, но нет элемента, который его использует ):
class My_Form_Element_Note extends Zend_Form_Element_Xhtml
{
public $helper = 'formNote';
public function isValid($value, $context = null) { return true; }
}
Тогда вам просто нужно сделать:
$note = new My_Form_Element_Note('note');
$note->setValue('<b>hi</b>');
$form->addElement($note);
И все будет работать.
Другие варианты включают создание чёрной магии с декораторами, но я действительно рекомендую вам не идти по этому пути.