我应该在 Doctrine 中禁用过滤器后启用它还是在下一个请求中自动启用它
Should I enable filter after disabling it in Doctrine or it will be automatically enabled in the next request
我正在做一个 Symfony 项目,我正在使用全局过滤器,我需要在一个控制器操作中禁用它。我应该在完成未过滤结果的工作后启用它们,还是它们会在下一个请求时自动启用?我还应该在启用过滤器后使用 EntityManager 的 clear()
方法吗?
不,如果您的 Doctrine 过滤器默认启用,则在禁用过滤器后无需再启用它。
根据 Doctrine Filter documentation,如果你的配置如下:
doctrine:
orm:
filters:
myFilter:
class: MyVendor\MyBundle\Filters\MyFilter
enabled: true
...
并且您使用以下方法禁用控制器内的过滤器:
public function homepageAction(Request $request)
{
....
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
$filters = $em->getFilters()
->disable('myFilter');
....
}
已为完整请求禁用过滤器。但是,如果您请求另一个 Controller,而您没有禁用过滤器,则将应用该过滤器。
我正在做一个 Symfony 项目,我正在使用全局过滤器,我需要在一个控制器操作中禁用它。我应该在完成未过滤结果的工作后启用它们,还是它们会在下一个请求时自动启用?我还应该在启用过滤器后使用 EntityManager 的 clear()
方法吗?
不,如果您的 Doctrine 过滤器默认启用,则在禁用过滤器后无需再启用它。
根据 Doctrine Filter documentation,如果你的配置如下:
doctrine:
orm:
filters:
myFilter:
class: MyVendor\MyBundle\Filters\MyFilter
enabled: true
...
并且您使用以下方法禁用控制器内的过滤器:
public function homepageAction(Request $request)
{
....
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
$filters = $em->getFilters()
->disable('myFilter');
....
}
已为完整请求禁用过滤器。但是,如果您请求另一个 Controller,而您没有禁用过滤器,则将应用该过滤器。