我有一个在开发环境中运行良好的服务,它看起来有点像这样:
use Symfony\Bundle\TwigBundle\TwigEngine;
public function __construct(TwigEngine $twig)
{
$this->twig = $twig;
}
// service methods here
我在services.yml
中通过传递@templating
来实例化它。
在开发环境中,一切都运行良好,但在我们的暂存环境(使用Symfony的prod
环境),我看到一个500错误,其中提到了参数。
must be an instance of Symfony\Bundle\TwigBundle\TwigEngine
但实际上...
instance of Symfony\Bundle\FrameworkBundle\Templating\DelegatingEngine given.
我通过遵循这个相关的bug报告中的建议,对
Symfony\Bundle\FrameworkBundle\Templating\EngineInterface
进行了类型提示来解决此问题。然而,我想知道为什么会出现这种情况——为什么在
dev
(和test
)中传递TwigEngine
实例,但在prod
中传递DelegatingEngine
?我的
config.yml
中相关的行如下:framework:
templating: { engines: ['twig'] }
我曾试过将其更改为
engines: 'twig'
- 即使用字符串而不是数组 - 但这没有影响任何内容。有人知道为什么在不同的环境中行为不同吗?