簡體   English   中英

Symfony2:如何將Doctrine實體數組添加到FormBuilder

[英]Symfony2: how to add a Doctrine Entity Array to FormBuilder

我正在使用Symfony和Doctrine,我有一個可以根據特定條件選擇行的函數:

$entities = $repository->getSomeEntities();

現在,我想在選擇列表中呈現這些實體,我檢查了entity FormType,但無法實現所需的功能。

例:

     $builder->add('id','entity', array(
        'class' => 'Path\To\Entity',
        'property' => 'id'
    ));

上面的代碼可以正常工作,只不過它選擇了所有實體。

我檢查了Symfony文檔http://symfony.com/doc/current/reference/forms/types/entity.html ,看來實現此目的的唯一方法是使用query_builder選項,該選項不適用於我的情況

無論如何,有沒有將$entities數組作為選擇列表添加到我的表單中?

看到您實現ChoiceListProvider Symfony內置了許多實現,但是您可能需要像SimpleChoiceListProvider這樣簡單的東西。

  1. EntityManager實例傳遞給表單(通過構造函數或選項)
  2. 將表單字段定義為choice而不是entity
  3. 將其choice_list設置為new MySimpleChoiceLIstProvider($this->entityManager)

您可以(可能將)不只是將EntityManager傳遞給提供程序,正如您所說的“將根據特定條件選擇行”。 如果該條件源自表單本身,則可能應該通過FormEvents ,這將使您可以訪問數據對象。

希望這可以幫助。

使用您編寫的內容,沒有任何理由QueryBuilder無法正常工作。

你應該有這樣的東西:

    $builder
            ->add('fieldname', 'entity', array(
                'class' => 'Path\to\Entity',
                'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
                                        return $er->yourFunction();
                                    },
                'required' => true
                ))

使用“ yourFunction”作為存儲庫的功能,例如“ getSomeEntities”。

您能告訴我們為什么它不起作用嗎? 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM