2011-05-26 84 views
2

我在S2中構建簡單的CMS,並且在處理文章形式的關係類別時遇到了一些麻煩。Symfony2:使用關係原則數據處理表格

CategoryType和操作的代碼:http://codepaste.net/ahyoig都像在Symfony網站上的教程/手冊。

窗體看起來不錯,但當我處理數據(也像手冊中)我得到錯誤:「預期的參數類型數組,字符串給出」在選擇領域,我現在不知道如何解決它。

回答

2

我認爲您的問題是因爲您將選項multiple設置爲false。這意味着表單類型將返回一個字符串值(因爲您將multiple設置爲false,即單個值),但您的關係可能設置爲多對多關係。

multiple選項設置爲true將向您的對象發送數組而不是字符串,這是應用程序所期望的。然後,如果您不喜歡HTML中的CategoryType的列表框外觀,則可以使用Symfony2中的form theming以不同的方式呈現它。

希望這有助於 馬特

1

你並不需要一個CategoryType。 $ categories數組的創建也是無用的。

最好的選擇是使用本地實體表單類型:

<?php 

use Doctrine\ORM\EntityRepository; 

//... 

$article = new Article(); 

$form = $this->get('form.factory') 
      ->createBuilder('form',$article) 
      ->add('category', 'entity', array 
      (
       'class' => 'CMSBackBundle:Category', 
       'query_builder' => function(EntityRepository $er) 
       { 
        return $er->createQueryBuilder('c') 
          ->orderBy('c.title', 'ASC'); 
       }, 
       'expanded' => false, 
       'multiple' => false 
      ) 
      // ... 
      ->getForm();