Как создать строку таблицы и столбцы, используя setDecorators в Zend PHP. - PullRequest
0 голосов
/ 22 марта 2012

Привет, я создал setDecorator (), который выглядит примерно так:

$timeSu->setDecorators(array('ViewHelper', 'Description', 'Errors',  
        array(
            array('data' => 'HtmlTag'),
            array('tag' => 'td', 'class' => 'input')),
        array('Label', 
            array('tag' => 'td')),  
        array(
            array('blah'=>'HtmlTag'),
            array('tag' => 'tr', 'openOnly' => true, 
                  'placement' => end_Form_Decorator_Abstract::PREPEND))

    ));

Точно так же у меня есть тот же декоратор для большего количества элементов. Теперь это дает мне что-то вроде

<form enctype="application/x-www-form-urlencoded" action="" method="post">
<div></div><div></div><div></div><div></div><div></div><table id="targetform"><tbody><tr><td id="timeSu-label"><label for="timeSu" class="required">Sunday:</label></td><td class="input"><select name="timeSu[]" id="timeSu" multiple="multiple" size="5" class="target_input"><option value="NULL" label="Select" selected="selected">Select</option><option value="00:00" label="00:00">00:00</option>.....</select></td><tr><td colspan="2" align="center"><input type="submit" name="submit" id="submit" value="Submit" class="target_button"></td></tr></tbody></table></form>

и создает две строки, т.е. первую строку с элементом select с двумя столбцами. первый столбец содержит имя метки, а второй - поле выбора. Теперь у меня есть семь таких выбранных элементов, и, используя один и тот же декоратор, он создает одну строку с 14 разными столбцами. Но я хочу создать строку, которая будет содержать 7 столбцов для 7 выбранных элементов. каждый столбец будет содержать две строки: одну для метки и вторую для поля выбора.

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

1 Ответ

1 голос
/ 22 марта 2012

Прикрепите такой декоратор для каждого из ваших элементов:

$this->addElement($this->createElement('select', 'fieldname1')
        ->setLabel('Label')
        ->setDecorators(array(
            'ViewHelper',
            array(array('filedtd' => 'HtmlTag'), array('tag' => 'td')),
            array(array('fieldtr' => 'HtmlTag'), array('tag' => 'tr')),
            'Label',
            array(array('labeltd' => 'HtmlTag'), array('tag' => 'td')),
            array(array('labertr' => 'HtmlTag'), array('tag' => 'tr')),
            array(array('table' => 'HtmlTag'),   array('tag' => 'table')),
            array(array('wholetd' => 'HtmlTag'), array('tag' => 'td')),
       )));

И декоратор для формы:

$this->setDecorators(array(
            'FormElements',
            'Form',
            array(array('wholerow' => 'HtmlTag'), array('tag' => 'tr')),
            array(array('table' => 'HtmlTag'),    array('tag' => 'table')),
        ));
...