前置说明:我之前使用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/DefaultController.php的第130行被调用
那么,我想知道什么是可接受的方法,以便在自定义的模型/服务/类中使用twig?
如果有用的话,下面是一些我的参考代码:
services.yml
services:
appbundle.newsletter:
class: AppBundle\Model\Newsletter
arguments: ['@twig']
src/AppBundle/Model/Newsletter.php
namespace AppBundle\Model;
class Newsletter
{
private $twig;
public function __construct(Twig_Environment $twig)
{
$this->twig = $twig;
}
}
调用我的模型
$newsletter = new Newsletter();
$newsletter = $this->get('appbundle.newsletter');
。 - ArtOsiDefaultController.php
调用行$newsletter = new Newsletter();
。 - retrodans$this->get('service_name');
将为您提供带注入依赖项的服务。如果您使用new ClassName()
调用类,则必须手动将 Twig 实例传递给类构造函数。 - ArtOsi