2

このコードを実行して選択コントロールを取得すると、正常に動作します。

    $builder
        ->add('access', 'entity', array(
            'label' => 'Behörigheter',
            'multiple' => true,   // Multiple selection allowed
            'expanded' => true,   // Render as checkboxes
            'property' => 'name',
            'class'    => 'BizTV\ContainerManagementBundle\Entity\Container',
            'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($company) {
                $qb = $er->createQueryBuilder('a');
                $qb->innerJoin('a.containerType', 'ct');
                $qb->where('a.containerType IN (:containers)', 'a.company = :company');
                $qb->setParameters( array('containers' => array(1,2,3,4), 'company' => $company) );
                $qb->orderBy('ct.id', 'ASC');

                return $qb;
            }
        )); 

チェックボックスのラベルをカスタマイズできるようにしたいのですが、先日、プロパティをselect_labelに変更し、エンティティでその関数を定義することでこれを達成できることを学びましたが、このクエリでは機能しません。

これは私が参加しているからでしょうか?それを達成する方法はありますか?

これは動作しないコードです

    $builder
        ->add('access', 'entity', array(
            'label' => 'Behörigheter',
            'multiple' => true,   // Multiple selection allowed
            'expanded' => true,   // Render as checkboxes
            'property' => 'select_label',
            'class'    => 'BizTV\ContainerManagementBundle\Entity\Container',
            'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($company) {
                $qb = $er->createQueryBuilder('a');
                $qb->innerJoin('a.containerType', 'ct');
                $qb->where('a.containerType IN (:containers)', 'a.company = :company');
                $qb->setParameters( array('containers' => array(1,2,3,4), 'company' => $company) );
                $qb->orderBy('ct.id', 'ASC');

                return $qb;
            }
        )); 

私が持っているエンティティで:

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

SELECT (単一選択) コントロールを持つ別のフォームでは正常に機能しますが、このフォームでは機能しません...

私が得るエラーは

致命的なエラー: 190 行目の /var/www/biztv_symfony/src/BizTV/ContainerManagementBundle/Entity/Container.php の非オブジェクトに対するメンバー関数 getName() の呼び出し

4

1 に答える 1

0

申し訳ありませんが、$this->parent が定義されていないオブジェクトがいくつかありました。name 関数を次のように書き直したところ、正常に動作しました。

public function getSelectLabel()
{
    if (isset($this->parent)) {
        return $this->name . ' (' . $this->parent->getName() . ')';
    }
    else {
        return $this->name;
    }
}

皆さんありがとう!

于 2012-08-16T22:19:12.463 に答える