2013-04-19 89 views
0

我正在學習symfony框架,並有一個大問題。我有兩個數據庫表:類別(主鍵:categoryid)和產品(主鍵:productid和外鍵:category_categoryid)。symfony2構建表單實體oneToMany

在控制器中添加一個「editAction」,用於編輯產品數據(包括字段category_categoryid)並保存在數據庫中。

表單必須包含用於分類產品的類別下拉列表。

代碼:

在ORM陽明

實體關係:產品 ...

manyToOne: 
category: 
    targetEntity: Category 
    inversedBy: products 
    joinColumn: 
    name: category_categoryid 
    referencedColumnName: categoryid 

實體:分類 ...

oneToMany: 
products: 
    targetEntity: Product 
    mappedBy: category 

表/類型 ProductType

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
... 

$builder->add('category_categoryid', 'entity', 
array('class' => 'SysCatalogoBundle:Category', 

'property' => 'name',)); 

... 
} 

ProductController的

public function editAction(Request $request) 
{ 
$id = 1; 
$em = $this->getDoctrine()->getManager(); 
$products= $em->getRepository('SysCatalogoBundle:Product')->find($id); 
$form = $this->createForm(new ProductType(), $products); 


... 
} 

視圖renderize一個形式與類型的元件中的列表,但沒有選擇產品類別(保存在DB)。我證明使用類型「query_builder」,但沒有工作,也嘗試類「新類別」沒有工作eather。如果我使用更簡單的數組(array(1,2,3))的「choice」類型,則選擇該類別。

這可能是問題所在? ORM實體的關係? 我遵循官方的symfony2文檔。

我非常感謝您的幫助! (對不起,我的英語)

+0

如果在您的編輯控制器操作中調試(或'var_dump')是'$ products-> category'有效嗎? – cheesemacfly

回答

1

您在表單構建器中沒有使用orm映射。嘗試更改表單/類型ProductType:

public function buildForm(FormBuilderInterface $builder, array $options) { 
... 

    $builder->add('category', 'entity', array()); 

... 
} 
相關問題