2012-10-30 125 views
1

填充選擇元素的形式與日期我有一個簡單的一對多關係的數據庫,看起來像這樣:ZF2:從數據庫

Tables Company  Category 
Rows  ID    ID 
     Name   Name 
     Category_ID

我有一個形式,我可以添加,編輯和刪除公司或類別的名稱,這工作正常。通過ID輸入類別也行得通,但使用起來顯然很糟糕。我想要的是在表單中從現有類別中選擇一個簡單的select元素。

我要生成代碼的<select>是:

$this->add(array(
     'name' => 'Categorie', 
     'type' => 'Zend\Form\Element\Select', 
     'attributes' => array(
      'options' => $categories, 
     ), 
     'options' => array(
      'label' => 'Categorie', 
     ), 
)); 

從我可以在(非常稀少)ZF2文檔中找到,我應該使用一個Hydrator獲取數據到$categories變量,但我不確定該從哪裏出發。

任何形式的例子或提示將不勝感激!

+0

答案以及以下博客帖子包含有關開始使用ZF2,Forms和Doctrine的詳細信息:http://www.michaelgallego.fr/blog/2012/07/04/new-zendform-features-explained/ –

回答

3

Here是關於表格的一篇很好的文章。

我的解決方案基於本教程,它(幾乎)運行良好。我不知道你是否將Doctrine用於你的項目,但我認爲這將是一個非常好的主意!

我也大量使用select元素。在給定的字段集,我產生了用這段代碼選擇值選項:

$opt= Registry::get('entityManager')->getRepository('My\Entity\Categories') 
       ->getCategoriesForCombobox(); 
$this->get('category')->setValueOptions($opt); 

如果(計劃)的使用原則,你應該非常小心學說文檔閱讀庫。如果您在表單中使用集合,則關於關聯的主題也是必讀內容。

+0

感謝您鏈接我,就像一個信息一樣,這篇文章很快就會更新,因爲Registry-Thing真的很糟糕:)此外,在使用Doctrine時,使用起來更簡單。 – Sam

+0

等不及了! –

+0

謝謝!山姆:與你現在的職位相比,是否會對實施做出重大改變? –