оформление Zend_Form_Element_MultiCheckbox в неупорядоченном списке - PullRequest
1 голос
/ 03 декабря 2009

Мне нужно оформить Zend_Form_Element_MultiCheckbox в неупорядоченный список, я могу получить каждый элемент окружения на <li>, установив setSeparator на </li><li> и тег HtmlTag на <li>

Я просто найду что-нибудь, чтобы установить <ul> вокруг этого списка, кто-нибудь сможет указать мне правильное направление?

Спасибо за чтение (Мой код ниже)

  $interests = new Zend_Form_Element_MultiCheckbox('foo');
  $interests->setSeparator('</li><li>');

  foreach ($interestsTable->findForSelect() as $interest) { // For earch interest add an option
      $interests->addMultiOption($interest->interest_id, $interest->interest);
  }

  // Decorate the interests
  $interests->setDecorators(array(
   array('ViewHelper'),
   array('label', array(
   'tag' => 'span'   )),
   array('HtmlTag', array(
   'tag' => 'li', 'class' => 'interestOption'))
  ));

1 Ответ

1 голос
/ 03 декабря 2009

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

Посмотрите: http://framework.zend.com/manual/en/zend.form.elements.html#zend.form.elements.decorators,, в частности, раздел под заголовком «Использование нескольких декораторов одного типа».

Исходя из этого, может сработать нижеследующее (но я его не проверял, оно может быть в неправильном порядке или что-то в этом роде):

$interests->setDecorators(
    array(
        array('ViewHelper'),
        array('label', array( 'tag' => 'span' )),
        array('HtmlTag', array( 'tag' => 'li', 'class' => 'interestOption')),
        array(
            'decorator' => array('LiTag' => 'HtmlTag'),
            'options' => array('tag' => 'ul')
        )
    )
);
...