如何在zend php中使用set Decorators创建表行和列。

时间:2012-03-21 21:51:19

标签: zend-framework zend-decorators

您好我已经创建了一个类似这样的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行选择元素的行。每列将包含两行,一行用于标签,第二行用于选择框。

简而言之,当前输出显示每个元素属性,如label和select in columns,我希望它们在行中,以便它们就像垂直对齐一个在另一个下面。 谢谢。

1 个答案:

答案 0 :(得分:1)

为每个元素附加这样的装饰器:

$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')),
        ));