[英]Symfony 2.8 injecting twig
预注:我正在从Drupal 7背景中学习Symfony。
我已经创建了一个自定义模型(虽然我认为它们在我读过的内容中被称为Symfony中的服务),并且希望它通过twig将数组渲染为变量。
我找到了这个链接,并认为这种注入方法可以解决这个问题: http : //symfony.com/doc/2.8/service_container.html
可悲的是,我和以下错误:
类型错误:传递给AppBundle \\ Model \\ Newsletter :: __ construct()的参数1必须是AppBundle \\ Model \\ Twig_Environment的实例,没有给出,在/ home / dan / working_files / symfony-playground / src / AppBundle / Controller /中调用第130行的DefaultController.php
所以,我想知道什么是可接受的方法,所以我可以在我的自定义模型/服务/类中使用twig?
如果它有用,这里有一些我的代码供参考:
services.yml
services:
appbundle.newsletter:
class: AppBundle\Model\Newsletter
arguments: ['@twig']
的src /的appbundle /型号/ Newsletter.php
namespace AppBundle\Model;
class Newsletter
{
private $twig;
public function __construct(Twig_Environment $twig)
{
$this->twig = $twig;
}
}
打电话给我的模特
$newsletter = new Newsletter();
尝试使用EngineInterface更改twig,如下所示:
services:
appbundle.newsletter:
class: AppBundle\Model\Newsletter
arguments: ['@templating']
和
namespace AppBundle\Model;
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
class Newsletter
{
private $twig;
public function __construct(EngineInterface $templating)
{
$this->twig = $templating;
}
}
您需要o调用服务后:
$this->get('service_name');
当你致电$newsletter = new Newsletter();
您没有通过依赖注入容器访问该服务,忽略您所做的服务定义。
要利用DIC并在服务上注入@twig
等依赖@twig
,您应该使用服务容器获取服务实例。 要在Symfony控制器上执行此操作,您可以这样做:
$newsletter = $this->get('appbundle.newsletter');
@twig
将按照yaml文件中的定义注入您的服务,并在您通过容器再次使用服务的每个地方之间共享。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.