2

これを上手に使っていた

public function setDefaultOptions(OptionsResolverInterface $resolver)
 {
    $resolver
    ->setDefaults(array(
            'category' => null,
            'query_builder' => function(EntityRepository $er) {
    $qb = $er->createQueryBuilder('u');

    if ($someCondition) {
        $qb->where('u.id = $options['id']);
    }

    return $qb;

これを複数の場所で使用しているため、ビルドフォームでやりたくないので、それを行う方法はありますか

4

1 に答える 1

0

setDefaultOptions$optionsオプションを初期化するためのものであり、実際に渡されたオプションによって最終的に上書きされるため、そこで変数にアクセスすることはできません。

ランタイム値に応じて異なるデフォルトの動作が必要な場合でも、それを管理するメソッドを定義できますが、ビルドフォーム中に手動で呼び出す必要があります (最終的には、抽象ビルドフォームを定義してその関数を呼び出し、クラスを拡張できます)。 parent::buildForm を呼び出す必要があります)。

于 2013-03-29T16:04:15.170 に答える