2012-05-25 56 views
0

我會創建一個單一的降DWON菜單我的用戶角色集合象下面這樣:如何強制集合是一個單一的下拉菜單的形式

class UserType extends AbstractType 
    { 
     public function buildForm(FormBuilder $builder, array $options) 
     { 
      $builder 
       ->add('userRoles',null, array('multiple'=>false)) 
      ; 
     } 

但我收到此錯誤信息:

Expected an object, but got a collection. Did you forget to pass 
"multiple=true" to an entity field? 

任何想法如何使一個集合不能多選!

回答

2

如果您將「multiple」設置爲false,則您正在使用的字段類型(「實體」)需要一個簡單的對象作爲輸入。你的目的,你可能想使用CallbackTransformer收集和對象之間轉換:

$builder->add(
    $builder->create('userRoles', null, array('multiple' => false)) 
     ->addModelTransformer(new CallbackTransformer(
      // transform the collection to its first element 
      function (Collection $coll) { return $coll[0]; }, 
      // transform the element to a collection 
      function (MyEntity $entity) { return new ArrayCollection(array($entity)); } 
     )) 
); 

如果不使用最新的Symfony2的主人,你應該使用的方法已過時prependNormTransformer(),而不是addModelTransformer()

相關問題