2012-07-16 67 views
4

我變得有點困惑與ZF2註解,我創建了一個基於this tutorial幾個要素:ZF2標註爲選擇元素

/** 
* @Annotation\Attributes({"type":"text" }) 
* @Annotation\Required(false) 
* @Annotation\Options({"label":"Cardholder's Name: *:"}) 
*/ 
protected $cardholder; 

對於簡單的文本中的所有工作正常,但是當嘗試我被困創建一個select元素。

如果您知道任何教程或github回購請讓我知道。

+0

您是否自行搜索並試圖找到解決方案? – Stony 2012-07-16 16:38:38

+0

我嘗試了不同的變化,但它仍然不起作用 /** * @Annotation \ Type(「Zend \ Form \ Element \ Select」) * @Annotation \ Options({「label」:「Card Type: 「}) * @Annotation \ Attributes({」options「:{」hi「:」2「,」hi2「:」2「}}) */ protected $ cardType; – 2012-07-16 17:02:15

回答

8

的問題是,鑑於 因此要獲得選擇你需要
添加例如用於驗證和篩選

/** 
* @Annotation\Attributes({"type":"text" }) 
* @Annotation\Options({"label":"Cardholder's Name: *:"}) 
* @Annotation\Required(false) 
* @Annotation\Filters({"name":"StripTags"},{"name":"StringTrim"}}) 
* @Annotation\Validator({"name":"StringLength","options":{"min":"1", "max":"20"}}) 
*/ 

protected $cardholder; 

/** 
* @Annotation\Type("Zend\Form\Element\Select") 
* @Annotation\Options({"label":"Description"}) 
* @Annotation\Attributes({"options":{"1":"Visa","2":"Maestro"}}) 
*/ 
protected $cardType; 

,並鑑於

<dt><?php echo $this->formLabel($form->get('cardholder')); ?></dt> 
<dd><?php 
echo $this->formInput($form->get('cardholder')); 
echo $this->formElementErrors($form->get('cardholder')); 
?></dd> 

<dt><?php echo $this->formLabel($form->get('cardType')); ?></dt> 
<dd><?php 
echo $this->formSelect($form->get('cardType')); 
echo $this->formElementErrors($form->get('cardType')); 
?></dd> 
+0

如果您打算從DB加載該主人或Visa卡,該怎麼辦? – 2012-10-29 17:35:09

+0

使用工廠創建表單並填充它 – 2012-11-12 12:42:28

0

試試這個

/** 
    * @Annotation\Type("Zend\Form\Element\Select") 
    * @Annotation\Required({"required":"false" }) 
    * @Annotation\Filter({"name":"StringTrim"}) 
    * 
    * 
    */ 
2

嘗試這個:

/** 
* @Annotation\Type("Zend\Form\Element\Select") 
* @Annotation\Required(false) 
* @Annotation\Options({"label":"Cardholder's Name: *:", "value_options":{"1":"VISA", "2":"MASTER CARD", "3":"AMERICAN EXPRESS"}}) 
*/ 
protected $cardholder;