24

標準コントローラを拡張する代わりに、クラスの 1 つに Twig を注入したいと考えています。

コントローラ:

namespace Project\SomeBundle\Controller;

use Twig_Environment as Environment;

class SomeController
{
    private $twig;

    public function __construct( Environment $twig )
    {
        $this->twig    = $twig;
    }

    public function indexAction()
    {
        return $this->twig->render(
            'SomeBundle::template.html.twig', array()
        );
    }
}

そして、services.yml私は次のものを持っています:

project.controller.some:
    class: Project\SomeBundle\Controller\SomeController
    arguments: [ @twig ]

私が得ているエラーは次のとおりです。

SomeController::__construct() は Twig_Environment のインスタンスでなければなりません。何も指定されていません

しかし、私は@twig経由で渡していconfigます。何が間違っているのかわかりません。

編集:

正しいコードを追加する - これが問題を修正したものです:

// in `routing.yml` refer to the service you defined in `services.yml` 
project.controller.some
    project_website_home:
        pattern:  /
        defaults: { _controller: project.controller.some:index }
4

2 に答える 2

6
  1. キャッシュをクリアしてみてください。

  2. コントローラーをサービスとして参照するようにルートが設定されていますか? そうでない場合、Symfony はサービス定義を使用しないため、指定した引数は使用されません。

于 2012-04-24T19:46:37.387 に答える