我有服务。
manager.summary.order:
class: Travelyo\CoreBundle\Services\Managers\Order\OrderSummaryManager
arguments:
template: '@templating'
router: '@router'
渲染html(使用twig),稍后将通过邮件发送或显示。
在我的Symfony2.1项目中使用此服务时,我没有任何问题。在这条树枝中,我有不同的电话,如app.request.locale
& number_format_currency
。
在我的测试控制器中调用此服务时。
我收到了这个错误
Twig_Error_Runtime: An exception has been thrown during the rendering of a
template ("You cannot create a service ("request") of an inactive scope
("request").") in "TravelyoCoreBundle:Mail:confirmation_mail.html.twig" at line 63.
这是我的控制器。
namespace Travelyo\ConfigurationBundle\Tests\Order;
use Travelyo\CoreBundle\Event\Order\OrderEvent;
use Travelyo\CoreBundle\Entity\Order\Order;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Travelyo\CoreBundle\Session\EtSession;
use Travelyo\CoreBundle\Services\Managers\OrderProcessManager;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class OrderSaveToDbTest extends WebTestCase {
private $summaryManger;
public function setUp()
{
static::$kernel = static::createKernel();
static::$kernel->boot();
$client = static::createClient();
$client->request(
'GET', '/clients/123456',
array('SERVER_NAME' => 'travelyo'), /* request params */
array(), /* files */
array('X-Requested-With' => "XMLHttpRequest",'SERVER_NAME' => 'travelyo'));
$this->summaryManger = static::$kernel->getContainer()->get('manager.summary.order');
}
public function testSaveAndSend()
{
$this->summaryManger->generateHml();
}
}
知道怎么没有这个错误吗?
我尝试将scope = request添加到我的服务中。但是我的应用程序中的其他服务使用此服务
由于
答案 0 :(得分:0)
要将请求发送到您的服务,请使您的服务yml
manager.summary.order:
class: Travelyo\CoreBundle\Services\Managers\Order\OrderSummaryManager
arguments:
template: '@templating'
router: '@router'
- "@service_container"
然后在您的服务文件中,您需要添加一个构造函数:
namespace Travelyo\ConfigurationBundle\Tests\Order;
class OrderSaveToDbTest extends WebTestCase {
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
/* the rest of your controller/service */
}
然后使用容器来获取请求非常简单:
$request = $this->container->get('request');
我可能有一些不完全正确,但它的一般想法。有关使用范围的更多信息,请查看此链接:http://symfony.com/doc/2.1/cookbook/service_container/scopes.html