Вставить собственный HTML в Zend_Form

У меня есть Zend_Form, созданный из такого контроллера:

        $form = new Zend_Form;
        $form->setAction('/ad/add')->setMethod('post')->setAttrib('id', 'add_form');
        $form->addElement('text', 'name', array(
            'label' => 'Name',
            'description' => 'Ex.: Samsung Galaxy Tab 10.1',
            'validators' => array(
                'alnum',
                'notEmpty',
                array('stringLength', array('min' => 3, 'max' => 150))
            ),
            'required' => true
        ));
        $form->addElement('textarea', 'description', array(
            'label' => 'Description',
            'description' => 'Make sure you give an accurate description of your item.',
            'validators' => array(
                'alnum',
                'notEmpty',
                array('stringLength', array('min' => 10, 'max' => 255))
            ),
            'required' => true
        ));
        $form->addElement('submit', 'Submit');

Когда я выводю это из представления, он работает нормально, визуализируясь с помощью магии dl и dd, как и должно быть.

Сейчас я хочу добавить в эту форму функцию загрузки изображений ajax. Каждое изображение будет загружено с помощью ajax, отображено в div, а затем скрытое поле моей формы будет заполнено идентификаторами загруженных файлов. Как я могу добиться этого, имея биты загрузки изображений ВНУТРИ разметки моих форм?


person Zorrocaesar    schedule 26.06.2012    source источник
comment
Возможный дубликат Добавьте HTML-код в Zend Forms   -  person Mogsdad    schedule 25.02.2016


Ответы (1)


Используйте декоратор сценария просмотра. Я предполагаю, что вы должны загружать изображение через iframe. Что вы можете поместить в файл phtml вашего декоратора сценария просмотра.

Внутри вашего класса формы сделайте.

$dec = new Zend_Form_Decorator_ViewScript();
$dec->setViewScript('Form.phtml');

$this->setDecorators(array($dec,'form'));

Внутри Form.phtml для рендеринга элемента выполните

<?php echo $this->element->username ;?>
<?php echo $this->element->image ; ?>

и добавьте свой iframe как есть.

Чтобы узнать больше о декораторе сценария просмотра

http://framework.zend.com/manual/en/zend.form.standardDecorators.html#zend.form.standardDecorators.viewScript

person Mr Coder    schedule 27.06.2012
comment
На самом деле я загружу изображение с помощью одного из доступных плагинов jQuery. Что мне нужно, так это контейнер для показа загруженных изображений и поле ввода, чтобы плагин загрузки мог забрать и использовать. И я хочу, чтобы это было в середине моей формы. - person Zorrocaesar; 27.06.2012
comment
@Zorrocaesar, чтобы поместить его в середину вашей формы, просто используйте декоратор viewscipt, как я упоминал выше. - person Mr Coder; 27.06.2012
comment
чем кажется, я не понял вашего ответа. Что должен содержать Form.phtml? Основная форма или новая разметка декоратора? Посмотрите мой пример кода? Как мне интегрировать ваш ответ с моим кодом? - person Zorrocaesar; 27.06.2012
comment
Он будет содержать html-структуру того, что вы обычно помещаете в тег ‹form› ‹/form›. framework.zend.com/manual/ ru / - person Mr Coder; 27.06.2012
comment
Также см. Заголовок stackoverflow.com/questions/1277849/ - person Cal Jacobson; 03.07.2012