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;

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

4

1 回答 1

0

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

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

于 2013-03-29T16:04:15.170 回答