2014-05-09 95 views
1

我在Sf2侧有一个命令这样的代码:创建虚假请求

use Symfony\Component\HttpFoundation\Request; 

... 

$container = $this->getContainer(); 

$container->enterScope('request'); 
$container->set('request', new Request(), 'request'); 

$context = $container->get('router')->getContext(); 
$context->setHost($container->getParameter('website_host')); 
$context->setScheme($container->getParameter('website_scheme')); 
$context->setBaseUrl($container->getParameter('website_path')); 
var_dump($context->getBaseUrl()); 

这是我在树枝模板做:

{{ render(controller('X:Y:emailMenu')) }} 

而且我得到这个恼人的错误:

Rendering a fragment can only be done when handling a Request. 

我已经尝试过composer update和:

php vendor/sensio/distribution-bundle/Sensio/Bund 
le/DistributionBundle/Resources/bin/build_bootstrap.php 

但我仍然收到错误消息。我做错了什么?

回答

3

这里是解决方案SF 2.4为我工作:

... 
$r = new Request(); 
$r->setLocale('fr'); 
$container->set('request', $r, 'request'); 
$container->get('request_stack')->push($r); 

所以不得不加入这一行使用request_stack:

$容器 - >获取( 'request_stack') - >推($ R);

希望它有助于某人。

+0

非常感谢。这正是我所期待的,它的工作完美。 –