Pre-note:私はDrupal 7の背景からSymfonyを学んでいます。Symfony 2.8 injecting twig
私はカスタムモデルを作成しましたが(symfonyのサービスと呼んでいると思いますが)、変数をtwig経由で配列をレンダリングしたいと考えています。
私はこのリンクを発見し、この注射アプローチは、トリックを行うだろうと思った:悲しいこと http://symfony.com/doc/2.8/service_container.html
、Iおよび以下のエラーと最大:
だから、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
、私が何であるか疑問に思って私のカスタムモデル/サービス/クラスの中で枝を使うことができるように許容できるアプローチですか?
それは使用であれば、ここに参照のための私のコードの一部です:/
namespace AppBundle\Model;
class Newsletter
{
private $twig;
public function __construct(Twig_Environment $twig)
{
$this->twig = $twig;
}
}
Newsletter.php
services.yml
services:
appbundle.newsletter:
class: AppBundle\Model\Newsletter
arguments: ['@twig']
のsrc/AppBundle /モデルを
私のモデルに電話する
$newsletter = new Newsletter();
あなたのモデルをサービスとして呼び出して、依存関係を注入する必要があります。コントローラーで呼び出すと、このようなサービスが得られます。$ newsletter = $ this-> get( 'appbundle.newsletter'); ' – ArtOsi
申し訳ありません。あなたが何を意味するか'$ newsletter = new Newsletter();'という行は 'DefaultController.php'から現在呼び出されています。 – retrodans
コントローラはサービスを受けるためにヘルパーを持っています。単純に '$ this-> get( 'service_name');を呼び出すと依存関係を注入してサービスを得ることができます。 'new ClassName()'でクラスを呼び出すと、twigインスタンスをクラスコンストラクタに手動で渡す必要があります。 – ArtOsi