1

フォームフィールドタイプにエンティティを使用し、このようなドロップダウンボックスのオプションのリストを取得すると、魅力のように機能します。

    $builder->add('parent', 'entity', array(
    'label' => 'Välj en fastighet för skärmen ',
    'class' => 'BizTVContainerManagementBundle:Container','property'=>'name',
    'query_builder' => function(EntityRepository $er) use ($parentType, $company) {
        return $er->createQueryBuilder('u')
            ->where('u.containerType = :type', 'u.company = :company')
            ->setParameters( array('type' => $parentType, 'company' => $company) )
            ->orderBy('u.name', 'ASC');
        },
    ));

さて、表示名をカスタマイズして、単なるコードではなく、一緒にコーディングする方法を教えてください。

'property'=>'name

私が最終的にやりたいのは、現在表示されている文字列を別の文字列と組み合わせることです。私は実際に、このエンティティの親の名前もそこに入れたいと思っています。たとえば、次のようになります。

option_name = $entity->getName() . ' (' . $entity->getParent()->getName() . ')' .

自分でフォーム、フラットphp htmlを作成しておけば簡単なことですが、何百時間もやりたくないので、最近はsymfony2を使用するのが好きです=)

任意の入力を歓迎します...

4

1 に答える 1

4

クラスを変更Containerし、文字列を返すためのメソッドを追加します(必要に応じて)。

class Container
{
    public function getSelectLabel()
    {
        return $this->name . '(' . $this->parent->getName() . ')';

    }
}

そして、それを次のように使用しますproperty(大文字小文字を小文字に置き換えて_ください):

$builder->add('parent', 'entity', array(
    'label'    => 'Välj en fastighet för skärmen ',
    'class'    => 'BizTVContainerManagementBundle:Container'
    'property' => 'select_label',
));

したがってgetSelectLabel()、「get」なしで「select_label」になります。

于 2012-08-08T22:41:35.017 に答える