サービス (作成したサービス) をコントローラーに挿入するにはどうすればよいですか? セッター注入で十分です。
<?php
namespace MyNamespace;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class MyController extends Controller
{
public function setMyService(MyService $myService)
{
$this->myService = $myService;
}
public function indexAction()
{
//Here I cannot access $this->myService;
//Because the setter is not called magically!
}
}
そして私のルート設定:
// Resources/routing.yml
myController_index:
pattern: /test
defaults: { _controller: "FooBarBundle:MyController:index" }
別のバンドルでサービスを設定しています:
// Resources/services.yml
parameters:
my.service.class: Path\To\My\Service
services:
my_service:
class: %my.service.class%
ルートが解決されると、サービスは注入されません (そうすべきではないことはわかっています)。yml ファイルのどこかに設定する必要があると思います。
calls:
- [setMyService, [@my_service]]
このコントローラーをサービスとして使用しているのではなく、リクエストを処理する通常のコントローラーです。
編集: この時点で、 $this->container->get('my_service'); でサービスを取得しています。しかし、私はそれを注入する必要があります。