我遇到了难以调试的问题。我尝试禁用SQLFilter
中的学说\Twig_Extension
,但该过滤器仍应用于下一个查询。
我在控制器中执行了相同类型的代码,并且过滤器被禁用。
以下是Twig函数的相关部分:
/**
* @return array|\Twig_Function[]
*/
public function getFunctions()
{
return [
new TwigFunction('hreflang', [$this, 'hreflang'], ['is_safe_callback' => true, 'is_safe' => ['html']]),
];
}
/**
* Builds and returns the hreflang of a page.
*
* @param string $locale
* @param TreeNodeInterface|null $contentObject
*
* @return string
*/
public function hreflang(string $locale, TreeNodeInterface $contentObject = null)
{
// Deactivate the doctrine filter
if ($this->em->getFilters()->isEnabled('locale_filter')) {
$this->em->getFilters()->disable('locale_filter');
}
// Query the ORM for fetching the translated url.
// This is the part where the SQLFilter should be deactivated but is not.
$url = $this->getTranslatedUrl($locale, $contentObject);
// Reactivate the doctrine filter.
$this->em->getFilters()->enable('locale_filter');
// ... Builds and returns the hreflang, no relevant code.
}
这段代码曾经在3.4应用程序上像超级按钮一样运行,我现在在4.1.4上工作
非常感谢。