Zend_Form: Как добавить пользовательский HTML - PullRequest
1 голос
/ 08 ноября 2010

Я создаю форму с помощью zend_form, чтобы добавить страницу на сайт. Эта форма для CMS.

Это код:

public function init()
{
        // display errors on top
        $this->setDecorators(array(
            array('FormErrors', array('markupElementLabelEnd' =>'', 'markupElementLabelStart' =>'')),
            'FormElements',
            array('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form')),
            'Form'
        ));

        // Set standard properties
        $this->setName('Admin_Form_Addpage')
             ->setAction("");


        // Textbox for the page title. The textbox is required
        $title = new Zend_Form_Element_Text('title');
        $title->setLabel('Title')
              ->setAttrib('placeholder', 'Title')
              ->setAttrib('autofocus', "")
              ->setRequired();

        // WYSIWYG editor
        $wysiwyg = new Zend_Form_Element_Textarea('pagecontent');
        $wysiwyg->setLabel('Content')
                ->setRequired();

        // Advanced CSS
        $css = new Zend_Form_Element_Textarea('css');
        $css->setLabel('CSS')
            ->setAttrib('rows', 10)
            ->setAttrib('cols', 60);

        // Advanced JS
        $js = new Zend_Form_Element_Textarea('js');
        $js->setLabel('Java Script')
           ->setAttrib('rows', 10)
           ->setAttrib('cols', 60);

        // Build form
        $this->addElement($title)
             ->addElement($wysiwyg)


             // Add submit button
             ->addElement('submit', 'add', array('label' => 'Add'))
             ->addElement($css)
             ->addElement($js)
             ->addDisplayGroup(array('css','js'), 'advanced',array('disableLoadDefaultDecorators' => true));

        $advanced = $this->getDisplayGroup('advanced');
        $advanced->setDecorators(array(
            'FormElements',
            array('HtmlTag', array('tag' => 'div', 'id' => 'div_advanced'))
        ));

         /**
         * Remove Errors decorator from all elements
         * so that they don't also display them
         */
        foreach ($this->getElements() as $element) {
            $element->removeDecorator('Errors');
 }

Теперь я хочу переключить расширенный компонент с помощью jQuery. Но чтобы это работало, мне нужна ссылка.

Итак, мой вопрос: есть кто-то, кто знает, как это сделать? Или еще лучше иметь какой-то пользовательский элемент формы, который может добавлять все типы html?

Спасибо,

Иво Тромперт

Ответы [ 2 ]

3 голосов
/ 08 ноября 2010

Если ваш продвинутый скрипт jquery связан с каким-то конкретным элементом - вы можете украсить его ViewScript .Позволяет применить любой html к текущему элементу.

1 голос
/ 08 ноября 2010

Вы можете добавить HTML в Zend_Form несколькими способами.Я вижу, вы уже использовали декораторы и HtmlTag, это хорошо.Вы также видели DivTag, Label и мое личное любимое описание?

$this->addDecorators(array(
array('ViewHelper'),
array('Errors'),
array('Description', array('tag' => 'p', 'class' => 'description')),
array('HtmlTag', array('tag' => 'dd')),
array('Label', array('tag' => 'dt')),

));

Использование их комбинации позволит вам добавить базовый HTML-код в вашу форму и добавить div, классы и идентификаторы. Элементы формы Zend

...