результат, который я хочу, - это текстовое поле, которое перехватывает до WMD (редактор уценки). и включает div.wmd-preview
элемент. то, что у меня сейчас есть в моих формах (расширение Zend_Form
) ... я добавляю функциональность через декораторы
// init()
$this->addElement('textarea', 'bio', array(
'label' => 'Bio',
'description' => '<a href="http://daringfireball.net/projects/markdown/syntax" target="_blank" title="get markdown editing/syntax help">Markdown enabled</a>',
'validators' => array(
array('StringLength', false, array(0, 1000))
),
'decorators' => array(
'ViewHelper',
'Errors',
array('Description', array('tag' => 'p', 'escape' => false)),
'Label',
array('HtmlTag', array('tag' => 'p')),
new Application_Form_Decorator_WmdPreview,
)
));
...
// add WMD & Prettify
$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$view = $bootstrap->getResource('view');
$view->headScript()->prependFile($view->baseUrl("/js/wmd/wmd.js"))
->prependScript('wmd_options = {"output": "Markdown"};')
->prependFile($view->baseUrl("/js/prettify/prettify.js"));
$view->headLink()->prependStylesheet($view->baseUrl('/js/prettify/prettify.css'));
}
но если я хочу, чтобы большинство textareas были включены с поддержкой wmd, я думаю, что было бы лучше инкапсулировать все это в отдельный класс? или какой-то элемент упаковки? в любом случае, будет лучше, если я смогу сделать что-то вроде
$this->addElement(new Application_Form_Element_WmdEditor);
или что-то похожее
Если ответом является создание пользовательского Zend_Form_Element
, как мне это сделать? просто создать пользовательский помощник вида, который содержит всю эту разметку? Что, если я хочу, чтобы другие декораторы, такие как ошибки и описание, помещались между текстовой областью и предварительным просмотром?