Symfony 4.1-在Twig_Extension中禁用SQLFilter

时间:2018-09-20 07:55:37

标签: php symfony orm doctrine twig

我遇到了难以调试的问题。我尝试禁用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上工作

非常感谢。

0 个答案:

没有答案