如何在symfony2中的SetDefaultOptions中访问$ options变量

时间:2012-08-28 07:10:32

标签: php symfony doctrine-orm

我使用的很好

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;

有没有办法做到这一点,因为我不想在buildform中做,因为我在多个位置使用它

1 个答案:

答案 0 :(得分:0)

setDefaultOptions旨在初始化选项,最终会被真实传递的选项覆盖,因此您无法访问$options变量。

如果你需要根据运行时值有不同的默认行为,你仍然可以定义一个管理它的方法,但是必须在buildform期间手动调用它(最终你可以定义一个抽象的buildform并在那里调用那个函数,然后扩展类将不得不调用parent :: buildForm。