Symfony 3.4控制器动作中的服务注入

Symfony 3.4控制器动作中的服务注入,symfony,symfony-3.4,Symfony,Symfony 3.4,服务.yml services: _defaults: autowire: true autoconfigure: true public: true 控制器: /** * @Security("has_role('ROLE_USER')") * @Route("/", name="homepage") */ public function indexAction(ContactServi

服务.yml

services:
  _defaults:
          autowire: true
          autoconfigure: true
          public: true 
控制器:

 /**
     * @Security("has_role('ROLE_USER')")
     * @Route("/", name="homepage")
     */
    public function indexAction(ContactService $contactService)
    {
错误

:indexAction()" requires that you provide a value for the "$contactService" argument.
在services.yaml文件中,我应该对这个示例work auto inject service to controller方法做什么,您缺少两件事:

App\:
    resource: '../src/*'

App\Controller\:
    resource: '../src/Controller'
    tags: ['controller.service_arguments']
第一行告诉Symfony使src/中的类可用作服务。这将为id为完全限定类名的每个类创建一个服务

对于第二行,单独导入控制器,以确保即使不扩展任何基本控制器类,也可以将服务作为操作参数注入

如果您没有使用新的Symfony Flex目录结构,并且仍然使用捆绑包,那么配置会有所不同:

AppBundle\:
    resource: '../../src/AppBundle/*'

AppBundle\Controller\:
    resource: '../../src/AppBundle/Controller'
    tags: ['controller.service_arguments']
在services.yaml文件中,您缺少两件事:

App\:
    resource: '../src/*'

App\Controller\:
    resource: '../src/Controller'
    tags: ['controller.service_arguments']
第一行告诉Symfony使src/中的类可用作服务。这将为id为完全限定类名的每个类创建一个服务

对于第二行,单独导入控制器,以确保即使不扩展任何基本控制器类,也可以将服务作为操作参数注入

如果您没有使用新的Symfony Flex目录结构,并且仍然使用捆绑包,那么配置会有所不同:

AppBundle\:
    resource: '../../src/AppBundle/*'

AppBundle\Controller\:
    resource: '../../src/AppBundle/Controller'
    tags: ['controller.service_arguments']

您能否提供action方法中服务的源文档供应商捆绑包的示例是什么-资源:'../../vendor/easycorp/easyadmin bundle/src/Controller'-不起作用您的示例不起作用-对于我,此工作资源:“../../src/AppBundle/Controller”此不工作资源:“../src/AppBundle/Controller”对于供应商-我找不到工作的方法示例:资源:“vendor/easycorp/easyadmin bundle/src/Controller”@GregHmhmm您也调整了名称空间吗?AppBundle\Controller \:resource:“../src/AppBundle/Controller”您能提供来自操作方法的服务的源文档吗供应商捆绑包的示例是什么-资源:'../../vendor/easycorp/easyadmin bundle/src/Controller'-不起作用您的示例不起作用-对于我,此工作资源:“../../src/AppBundle/Controller”此不工作资源:“../src/AppBundle/Controller”对于供应商-我找不到工作的方法示例:资源:“vendor/easycorp/easyadmin bundle/src/Controller”@GregHmhmm您也调整了名称空间吗?AppBundle\Controller \:资源:“../src/AppBundle/Controller”