Форма с тремя столбцами в Zend Framework - PullRequest
2 голосов
/ 19 сентября 2011

У меня возникла проблема при создании формы "таблицы трех столбцов" в Zend Framework:

У меня уже есть форма Zend, украшенная таблицей столбцов:

В таблице два столбца, первый из которыхдля метки, а второй - для Zend_Form_Element, это хорошо работает, но я хочу добавить третий столбец и поместить туда маленькое изображение - знак вопроса, где я буду устанавливать javascript.

Как установить оформление для этого?

Текущее оформление для двух столбцов таблицы:

<?php
class Application_Form_Login extends Zend_Form {

public function init() {

    // create decoration for form's elements
    $elementDecoration = array(
        'ViewHelper',
        'Description',
        'Errors',
        array(array('data'=>'HtmlTag'), array('tag' => 'td', 'valign' => 'TOP')),
        array('Label', array('tag' => 'td')),
        array('Errors'),
        array(array('row'=>'HtmlTag'),array('tag'=>'tr'))
    );
    $buttonDecoration = array(
        'ViewHelper',
        array(array('data'  => 'HtmlTag'), array('tag' => 'td')),
        array(array('label' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'prepend')),
        array(array('row'   => 'HtmlTag'), array('tag' => 'tr')),
    );
    $formDecoration = array(
        'FormElements',
        array(array('data'=>'HtmlTag'), array('tag'=>'table', 'class'=>'forms')),
        'Form'
    );

    // create form elements
    $username = new Zend_Form_Element_Text("username");
    $username->setLabel('Username: ')
             ->setDecorators($elementDecoration);

    $password = new Zend_Form_Element_Password("password");
    $password->setLabel('Password: ')
             ->setDecorators($elementDecoration);

    $submit = new Zend_Form_Element_Submit('Login');
    $submit->setLabel('LOGIN')
           ->setDecorators($buttonDecoration);

    $this->setDecorators($formDecoration);

    // set created form elements
    $this->setAction('')
        ->setMethod('post')
        ->addElement($username)
        ->addElement($password)
        ->addElement($submit);
    }

   }

1 Ответ

1 голос
/ 19 сентября 2011

Это зависит от того, требуется ли вам добавить <td class="fieldTip"></td>, или если вам нужно добавить что-либо внутри <td></td>.

. В первом случае вам просто нужно добавить простой декоратор HtmlTag сразу послеДекоратор меток:

array('HtmlTag', array('tag'=>'td','class'=>'fieldTip','placement'=> 'APPEND'))

Если вы хотите поместить какое-то описание поля, вы должны поиграть с декоратором Description и методом $ element-> setDescription (), а также выполнить некоторые css / jsпосле, чтобы отобразить его как всплывающую подсказку.

EDIT

Я только что ответил на другой вопрос о простых пользовательских декораторах, вы найдете то, что вам нужно в примере, который ядать там Zend Элемент формы с Javascript - Decorator, View Helper или View Script? .Просто замените деталь <script> на то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...