2011-08-29 82 views
0

裝飾者應該將這兩個元素並排放置。通常它會呈現默認的zend的「dl-dt-dd」結構。我需要在dt中使用同一個dd中的這兩個元素以及一個共同的單個標籤。以下代碼將是zend表單裝飾器?

$card_expmonth = new Zend_Dojo_Form_Element_FilteringSelect('card_expmonth'); 
$card_expmonth->setLabel('Card Expiration') 
    ->setMultiOptions(array(1=>'1','2','3','4','5','6','7','8','9','10','11','12')) 
    ->setAttrib('style','width:100px;') 
    ->setRequired(true); 

$card_expyear = new Zend_Dojo_Form_Element_FilteringSelect('card_expyear'); 
$card_expyear->setMultiOptions(array(2011=>'2011','2012','2013','2014','2015','2016','2017','2018','2019','2020','2021','2022','2023','2024','2025')) 
    ->setAttrib('style','width:100px;') 
    ->setRequired(true); 

請別人幫我。

回答

1
$card_expmonth->setDecorators(array(
    'ViewHelper', 
    array(array('dd' => 'HtmlTag'), array('tag' => 'dd', 'openOnly' => true)), 
    array('Label', array('tag' => 'dt')), 
    array(array('dl' => 'HtmlTag'), array('tag' => 'dl', 'openOnly' => true)) 
)); 

$card_expyear->setDecorators(array(
    'ViewHelper', 
    array(array('dd' => 'HtmlTag'), array('tag' => 'dd', 'closeOnly' => true)), 
    array(array('dl' => 'HtmlTag'), array('tag' => 'dl', 'closeOnly' => true)) 
)); 

未經測試。告訴我,如果它不起作用。

讀也http://devzone.zend.com/article/3450

+0

它將是DijitElement而不是ViewHelper。謝謝你給我openOnly和closeOnly的想法。 –

0

我建議你不要在這種情況下使用的裝飾:

$card_expmonth->setDecorators(array('ViewHelper')); 
$card_expyear->setDecorators(array('ViewHelper')); 

鑑於:

<form action="<?php echo $form->getAction() ?>" 
     method="<?php echo $form->getMethod() ?>" 
     enctype="<?php echo $form->getEnctype() ?>" 
     accept-charset="<?php echo $form->getAttrib('accept-charset') ?>" 
     id="<?php echo $form->getId() ?>"> 
    <dl> 
     <dt><?php echo $form->card_expmonth->getLabel() ?></dt> 
     <dd> 
      <?php echo $form->card_expmonth ?> 
      <?php echo $form->card_expyear ?> 
     </dd> 
    </dl> 
</form> 

另外,你應該關心錯誤輸出。

+0

如果這可以通過裝修來完成反正那麼這將是最好的。這裏不可能嗎? –