生の 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();
}
}