Добавьте некоторый HTML к Формам Зенда

Я ищу простой бит кода, который позволит мне добавить следующий HTML в свою форму зенда:

<div id="wmd-button-bar" class="wmd-panel"></div>

Вот именно это должно быть выше моего элемента 'метода' в форме, но вот именно. Для такого простого действия я не могу найти методы, которые не вовлекают меня изучающий аэрокосмические исследования (т.е. Декораторы Зенда).

14
задан Charles 6 April 2011 в 03:20
поделиться

4 ответа

На данный момент я могу придумать только один способ - добавить в форму фиктивный элемент и удалить все декораторы, кроме «HtmlTag» с атрибутами, которые вы указано в вашем вопросе. Удаление декораторов означает, что фактический элемент не будет отображаться - будет отображаться только декоратор HtmlTag.

Итак, если ваша форма - $ form:

$form->addElement(
    'hidden',
    'dummy',
    array(
        'required' => false,
        'ignore' => true,
        'autoInsertNotEmptyValidator' => false,
        'decorators' => array(
            array(
                'HtmlTag', array(
                    'tag'  => 'div',
                    'id'   => 'wmd-button-bar',
                    'class' => 'wmd-panel'
                )
            )
        )
    )
);
$form->dummy->clearValidators();

Обратите внимание, что вы хотите предотвратить любую проверку элемента. Это только один способ - вероятно, есть и другие.

Вывод:

<div id="wmd-button-bar" class="wmd-panel"></div>

Есть хорошая статья с описанием декораторов .

28
ответ дан 1 December 2019 в 07:06
поделиться

Вы можете создать свой собственный помощник представления libraray--App>View>Helper>PlainTextElemet.php

Создайте папку в папке библиотеки с именем App и папку с именем View, в View создайте папку Helper, в папке Helper создайте класс с именем PlainTextElement

 class App_View_Helper_PlainTextElement extends Zend_View_Helper_FormElement {

        public function PlainTextElement($name, $value = null, $attribs = null) {
            $info = $this->_getInfo($name, $value, $attribs);
            extract($info); // name, value, attribs, options, listsep, disable
            if (null === $value) {$value = $name;}

            return $value;
          }

    }

Затем в библиотеке так же создайте класс App>Form>Element>PlainText.php

И поместите в этот класс следующий код

class App_Form_Element_PlainText extends Zend_Form_Element_Xhtml {

    public $helper='PlainTextElement';

    public function isValid($value){

        return true;
    }
}

Теперь в вашей форме вы можете создавать любой html код, который вам нравится:

$someValue = '<div id="wmd-button-bar" class="wmd-panel"></div>';

        $this->addElement(new App_Form_Element_PlainText('pliantext1', array(
                            'value'=>$someValue,
        )));

Не забудьте в application.ini добавить следующие строки:

 autoloaderNamespaces.app = "App_"
 resources.view.helperPath.App_View_Helper="App/View/Helper"
8
ответ дан 1 December 2019 в 07:06
поделиться

Поместите его в сценарий просмотра ...

<!-- /application/views/scripts/myController/myAction.phtml -->

<div id="wmd-button-bar" class="wmd-panel"></div>
<?php echo $this->form ;?>
-1
ответ дан 1 December 2019 в 07:06
поделиться

Вы должны добавить декоратор .

Может оказаться полезным любой декоратор разметки .

Дополнительную информацию о декораторах см .: http://www.slideshare.net/weierophinney/leveraging-zendform-decorators

-1
ответ дан 1 December 2019 в 07:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: