从Symfony 2.5升级到2.6后,我无法使用asset
上的kernel.terminate
帮助器呈现树枝模板。这是一个简化的测试用例:
class TestController extends Controller
{
public function myAction(Request $request)
{
$this->container->get('event_dispatcher')->addListener(KernelEvents::TERMINATE, function() {
$service = $this->container->get('templating.helper.assets');
$url = $service->getUrl('logo.png');
});
return new Response('Finished');
}
}
抛出以下异常:
InactiveScopeException in *** line ***: You cannot create a service ("templating.helper.assets") of an inactive scope ("request").
使用Symfony 2.5,这很好用。我在changelog from 2.5 to 2.6中找不到任何重要内容。
答案 0 :(得分:1)
在您发送回复后访问请求是没有意义的。你正在做一些奇怪的事......
如果您需要发送HTML格式的电子邮件,可以使用memory spool,它将在活动结束后发送电子邮件。
如果您正在运行某种后台任务,则应考虑使用其他CPU线程。如果使用相同的线程运行后台任务,则会提供HTTP请求,然后新请求将等待后台任务完成。有关此内容的详细信息,请参阅PHP-FPM池下的this resource。
事实上,您不需要 进行模板化的请求。您需要 请求。你可以这样做:
$request = new Request(); //You may want to set locale and domain etc..
$this->container->enterScope('request');
$this->container->set('request', $request, 'request');