First of all, lets look at what is available in your service container:
λ php bin/console debug:container | grep twig
twig Twig_Environment
...
λ php bin/console debug:container | grep templa
templating SymfonyBundleTwigBundleTwigEngine
...
Now we would probably go for TwigEngine class (templating service) instead of Twig_Enviroment (twig service).
You can find templating service under vendorsymfonysymfonysrcSymfonyBundleTwigBundleTwigEngine.php
...
class TwigEngine extends BaseEngine implements EngineInterface
{
...
In this class you will find two methods render(..) and
renderResponse(...), which means that the rest of your code should work fine with the below example. You will also see that TwigEngine injects twig service (Twig_Enviroment class) to construct it parent class BaseEngine. There fore there is no need to request twig service and your error requesting Twig_Environment should vanish.
So in your code You would do this like so:
# app/config/services.yml
services:
project.controller.some:
class: ProjectSomeBundleControllerSomeController
arguments: ['@templating']
Your class
namespace ProjectSomeBundleController;
use SymfonyBundleFrameworkBundleTemplatingEngineInterface;
use SymfonyComponentHttpFoundationResponse;
class SomeController
{
private $templating;
public function __construct(EngineInterface $templating)
{
$this->templating = $templating;
}
public function indexAction()
{
return $this->templating->render(
'SomeBundle::template.html.twig',
array(
)
);
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…