Обтекание ярлыков в Zend_Form_Element_Radio - PullRequest
0 голосов
/ 13 марта 2011

Может быть, кто-то знает. Как обернуть Zend_Form_Element_Radio, включая метку всего стека радиовходов (с метками входа).

public $radioDecorators = array(
    'ViewHelper',
    array('Description',array('tag'=>'div','class'=>'','placement' => 'prepend')),
    array('Errors',array('class'=>'error_message_show','placement' => 'prepend')),
    array(array('data' => 'HtmlTag'), array('tag' => 'div', 'class' => 'element')),
    array('label', array('class'=>'label_text','placement' => 'prepend')),
    array(array('rows' => 'HtmlTag'), array('tag' => 'div', 'class' => 'radio')),
);


    $offer_type = new Zend_Form_Element_Radio('offer_type', array(
                'label' => 'Label I'd like to wrap with inputs',    //Label to wrap
                'required' => true,
                'description' => '',
                'decorators' => $this->radioDecorators,
                'multioptions' => array (
                    'standard' => 'standard',
                    'premium' => 'premium',
                ),
            ));
    $this->addElement($offer_type);

Приведенный выше пример не решил my, поскольку оборачивает только несколько входных меток.

1 Ответ

2 голосов
/ 14 марта 2011

Мне кажется, я знаю, что вы ищете, и если да, то вам повезло, поскольку я только что сделал это на днях.

Стандартный многопользовательский элемент ZF отделяет каждую «опцию»используя свойство separator (по умолчанию <br /> для радио и новая строка для выбора).Это хорошо для <option> элементов, но довольно скудно для коллекции радио-кнопок.

Решение состоит в том, чтобы

  • Добавить декоратор (ы) HtmlTag к элементу, оборачивая содержимое
  • Установите разделитель для закрытия и повторного открытия HtmlTag

Например, вот решение, чтобы обернуть коллекцию входов в неупорядоченный список

$offer_type = new Zend_Form_Element_Radio('offer_type', array(
    'separator' => '</li><li>',
    'decorators' => array(
        'ViewHelper',
        array(array('liWrapper' => 'HtmlTag'), array('tag' => 'li')),
        array(array('ulWrapper' => 'HtmlTag'), array('tag' => 'ul')),
        // the rest
    )
));

Альтернатива - написать свой собственный помощник по просмотру.Создать собственную версию formRadio должно быть довольно просто.

...