Как сделать HTML в формате Zend? - PullRequest
1 голос
/ 26 февраля 2011

В моей форме мне нужно это:

<li class  ="af_title"><div>Contact form</div></li>

Я понимаю, что если мне нужно, например, текстовое поле - тогда я бы просто создал Zend_Form_Element_Text и обернул вокруг него декоратор HtmlTag - верно?

вопросы:

1) как мне сгенерировать элемент формы div, чтобы обернуть его декоратором?

2) ммм. - Как бы я установить содержание указанного элемента, чтобы «Форма контакта»?

Спасибо:)

1 Ответ

4 голосов
/ 26 февраля 2011

Чтобы обернуть вашу контактную форму вокруг div, которая находится внутри <li class ="af_title">, вы можете сделать следующее:

$yourForm = new YourForm();
$yourForm->addDecorator(array('div' => 'HtmlTag'), array('tag' => 'div'));
$yourForm->addDecorator(array('li' => 'HtmlTag'), array('tag' => 'li', 'class' => 'af_title'));

РЕДАКТИРОВАТЬ:

Я вижу, что вы говорите об элементе формы Div,Такого элемента не существует, но вы можете легко его создать.Для этого вам понадобятся две вещи: новый элемент формы (то есть элемент div) и помощник вида формы, который позаботится о создании HTML.Я позволил себе подготовить простые примеры этих двух элементов, чтобы показать, что я имею в виду:

Div.php в APPLICATION_PATH./ forms / Элемент :

class My_Form_Element_Div extends Zend_Form_Element {
     /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formDiv';

    public function __construct($spec, $options = null) {
        parent::__construct($spec, $options);
        $this->removeDecorator('label');
        $this->removeDecorator('htmlTag');

    }

}

FormDiv.php в APPLICATION_PATH./ views / helpers :

class My_View_Helper_FormDiv extends Zend_View_Helper_FormElement {


    public function formDiv($name, $value = null, $attribs = null) {  

        $class = '';

        if (isset($attribs['class'])) {
             $class = 'class = "'. $attribs['class'] .'"';
        }

        return "<li $class><div>$value</div></li>";
    }

}

Имея это, вы можете просто добавить элемент div в любой элемент формы в их методе init () следующим образом:

    $div = new My_Form_Element_Div('mydiv');
    $div->setValue('Contact form')->setAttrib('class', 'af_title');
    $this->addElement($div);
...