预注:我从一个Drupal 7背景学习Symfony的。Symfony的2.8注射枝杈
我创建了一个自定义模式(虽然我觉得他们被称为从我读Symfony的服务),并希望它使通过树枝的数组变量。
我发现这个链接,并认为这种注射方法会做的伎俩: http://symfony.com/doc/2.8/service_container.html
可悲的是,我并了以下错误:
Type error: Argument 1 passed to AppBundle\Model\Newsletter::__construct() must be an instance of AppBundle\Model\Twig_Environment, none given, called in /home/dan/working_files/symfony-playground/src/AppBundle/Controller/DefaultController.php on line 130
所以,我想知道是什么一个可接受的方法,所以我可以在我的自定义模型/服务/类中使用树枝?
如果是用的,这里是我的一些代码,以供参考:
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();
你应该把你的模型称为服务来注入依赖关系,如果你在控制器中调用它,你可以得到这样的服务:'$ newsletter = $ this-> get('appbundle.newsletter');' – ArtOsi
对不起,我不是确定你的意思。 ''newsletter = new Newsletter();'目前正在从'DefaultController.php'调用。 – retrodans
所以控制器有助手来获得服务。简单地调用'$ this-> get('service_name');'将为注入的依赖注入服务。如果你用'new ClassName()'调用类,那么你必须手动将树枝实例传递给类的构造函数。 – ArtOsi