2013-07-15 1 views
0

Я хочу, чтобы получить что-то вроде этого:Zend_Form: как удалить несколько <legend> элементов в FIELDSET (вложенные DIV)

<div class="widgetbox"> 
    <legend class="widgettitle">Widget Box</legend> 
    <div class="widgetcontent"> Content goes here... </div> 
</div> 

мой код выглядит следующим образом:

$this->addDisplayGroup(
     $fields, 
     'main', 
     array(
      'legend' => $this->_tlabel.'group_main', 
      'decorators' => array(
       'FormElements', 
       array(
        array('widgetcontent'=>'HtmlTag'), array('tag'=>'div', 'class'=>'widgetcontent') 
        ), 
       array('HtmlTag',array('tag' => 'div', 'class' => 'widgetbox')), 
      ) 
     ) 
    ); 

и все, что я могу получить является:

<div class="widgetbox"> 
    <legend>Main info</legend> 
    <div class="widgetcontent"> 
     <legend>Main info</legend> 
    </div> 
</div> 

Как вы можете видеть, я получаю двойную легенды элементов, но я хочу только один - сначала, сразу после div.widgetbox.

Помогите удалить ненужный легенда элемент из вложенного div?

Спасибо!

+0

Это точный код, который вы используете? Декораторы, которые вы указываете, не включают в себя легенду/набор полей, поэтому я не вижу, как вы можете получить два из них. Кроме того, я считаю, что '' действителен только внутри '

', поэтому ваш желаемый результат недействителен HTML. –

+0

есть объявление легенды: '' legend '=> $ this -> _ tlabel.'group_main', ' – wasil

+0

ОК, я знаю, что это будет недействительно, и я могу жить с этим пока. Идеально было бы заменить , например,

, но я полагаю, что это выходит за рамки возможностей Zend_Form:/ – wasil

ответ

2

Вместо этого вы можете использовать h4, но не как легенду. Попробуйте:

$this->addDisplayGroup(
    $fields, 
    'main', 
    array(
     'description' => 'Widget title', 
     'decorators' => array(
      'FormElements', 
      array(array('widgetcontent' => 'HtmlTag'), array('tag'=>'div', 'class'=>'widgetcontent')), 
      array('Description', array('tag' => 'h4', 'placement' => 'prepend', 'class' => 'widgettitle')), 
      array(array('widgetbox' => 'HtmlTag'), array('tag' => 'div', 'class' => 'widgetbox')) 
     ) 
    ) 
); 

Это добавляет описание декоратора и устанавливает свой тег как <h4>. Я также нарисовал декоратор виджетов, чтобы сделать его более ясным, как все это сочетается. Это дает мне:

<div class="widgetbox"> 
    <h4 class="widgettitle">Widget title</h4> 
    <div class="widgetcontent">...</div> 
</div> 

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

+0

Он работал как шарм. Ты мастер декоратора, парень :) – wasil

 Смежные вопросы

  • Нет связанных вопросов^_^