Symfony 2依赖注入Controller构造

时间:2014-02-07 11:19:27

标签: php symfony

我试图将许多服务添加到Controller的构造中但没有成功。

class PersonController extends Controller
{
    public function __construct(UtilityService $Utils)
    {
        $this->util = $Utils;
    }

    public function indexAction()
    {
        ...
    }

}

我必须遵循的道路是什么?

2 个答案:

答案 0 :(得分:2)

您需要在PersonController中将services.yml控制器定义为服务并向其注入UtilityService

# src/Acme/HelloBundle/Resources/config/services.yml
parameters:
    # ...
    person.controller.class: Acme\HelloBundle\Controller\PersonController

services:
    person.controller:
        class: "%person.controller.class%"
        arguments: ["@UtilityService"]

其中:

  1. person.controller.class 是控制器类的名称
  2. arguments中的
  3. UtilityService 是您要注入的servicem的名称

答案 1 :(得分:1)

this post中提及@Cerad:

诀窍是将控制器定义为服务,然后使用服务ID而不是类名。

http://symfony.com/doc/current/cookbook/controller/service.html