更新Symfony 2.4:“;只有在处理请求时才能呈现片段。”;

更新Symfony 2.4:“;只有在处理请求时才能呈现片段。”;,symfony,request,twig,updating,symfony-2.4,Symfony,Request,Twig,Updating,Symfony 2.4,自从我迁移到Symfony 2.4后,我收到以下错误消息: 只有在处理请求时才能呈现片段 发生这种情况是因为,在某些页面上,我通过执行$sf2->container->get('Twig')->render(“MyBundle::my template.html.Twig”),在一些页面中呈现一些带有细枝的模板,这些模板由另一个旧框架处理 没错,symfony2没有处理这些请求,但我仍然想用Twig呈现这些模板!为什么我不能(再)这样做呢?!如何解决这个问题 下面是我在旧项目中“引导”SF2的代

自从我迁移到Symfony 2.4后,我收到以下错误消息:

只有在处理请求时才能呈现片段

发生这种情况是因为,在某些页面上,我通过执行
$sf2->container->get('Twig')->render(“MyBundle::my template.html.Twig”),在一些页面中呈现一些带有细枝的模板,这些模板由另一个旧框架处理

没错,symfony2没有处理这些请求,但我仍然想用Twig呈现这些模板!为什么我不能(再)这样做呢?!如何解决这个问题

下面是我在旧项目中“引导”SF2的代码:

$loader = require_once __DIR__.'/../../../app/bootstrap.php.cache';
Debug::enable();
require_once __DIR__.'/../../../app/AppKernel.php';

$kernel = new AppKernel('bootstrap', true);
$kernel->loadClassCache();
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$kernel->boot();
$kernel->getContainer()->enterScope('request');
$kernel->getContainer()->set('request', $request, 'request');
$this->container = $kernel->getContainer();
编辑:顺便说一下,它可能与以下内容相关:。 不过,我不想降级到Symfony 2.3,删除
供应商
目录并不能解决我的问题

编辑²:我发现问题是因为新的

HttpKernel
中,
handleRaw(Request$Request,$type=self::MASTER\u Request)
通常将请求推送到请求堆栈(
$this->RequestStack->push($Request);
)。因此,如果我将一个公共方法
pushRequestStack($request)
添加到
HttpKernel
中,它就会工作。。但我怎样才能做好呢?我找不到任何公共方法能够从
HttpKernel
获取
$requestStack
(因此我可以从外部推送请求)

我不能使用“普通”方法(
$kernel->handle($request)
),因为它会抛出一些异常,例如对于不存在的路由,或者对于已经由PHP启动的会话


总之,有没有办法在不完全处理请求的情况下将我的/任何请求“推”到requestStack?

我遇到了同样的问题,并通过使用以下命令重建引导解决了这个问题:

php vendor/bundles/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php app

您必须从Sf2命令在“请求\u堆栈”中推送一个新请求

 $this->getContainer()->get('request_stack')->push(Request::createFromGlobals());

可能应该是
$kernel->getContainer()->set('request',request::createFromGlobals(),'request')
否则为什么要创建
$request
变量?是的,这是一个错误,但它实际上抛出了相同的错误。我刚刚更新了我的原始帖子,现在我知道问题出在哪里了,我只是不知道如何解决它!你找到解决办法了吗?我已经使用同一个代码段很长时间了,但现在它不起作用了。不,我没有。实际上,我没有浪费太多时间寻找解决方案,而是选择在旧框架中仅使用SF2中的细枝模板渲染。。但是我甚至没有访问
path()
render()
的权限。我也尝试过同样的方法,但没有解决我的问题。虽然我使用的是Symfony 2.7,但我已经重建了相同的引导程序。