我使用了这个精细的
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中这样做,因为我在多个位置使用
setDefaultOptions
用于初始化选项,这些选项最终将被实际传递的选项覆盖,因此您无法访问那里的$options
变量。
如果您需要根据运行时值有不同的默认行为,您仍然可以定义一个方法来管理它,但必须在构建表单期间手动调用该方法(最终您可以定义抽象构建表单并在那里调用该函数,那么扩展类将必须调用parent::buildform)。