services.yml中的Symfony服务声明

时间:2017-09-19 17:58:25

标签: php symfony

我正在根据最新的docs在Symfony 3中编写服务。

我写了一堂课:

<?php

namespace julew\AdminBundle\Service;

class FileService {
    public function create() {
        die('I am here!');
    }
}

我的app / config / services.yml看起来像:

services:
    # default configuration for services in *this* file
    _defaults:
        # automatically injects dependencies in your services
        autowire: true
        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure: true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public: false
    julew\AdminBundle\:
        resource: '../../src/julew/AdminBundle/*'
        exclude: '../../src/julew/AdminBundle/{Entity,Repository}'

但只有我得到的是这个错误:

  

在C:\ xampp \ htdocs \ roch \ app / config \ _ services.yml中找不到类Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase(从&#34; C:\ xampp \ htdocs \ roch导入) \ APP /配置\ config.yml&#34;。)

我做错了什么?

编辑1

问题是,自动生成的包中有测试 - 必须添加它们以排除路径。

但是现在出现了其他问题。服务不是通过控制器类型提示注入的。我得到的错误:

  

Controller&#34; julew \ RochNotesBundle \ Controller \ ParserController :: indexAction()&#34;要求您为&#34; $ fileService&#34;提供一个值。论点。参数可以为空,并且没有提供空值,没有提供默认值,或者因为在此之后存在非可选参数。

控制器方法如下:

public function indexAction(FileService $fileService) {
 .
 .
 .
}

在顶部,我补充说:

use julew\AdminBundle\Service\FileService;

1 个答案:

答案 0 :(得分:2)

如果要将各种服务注入控制器,可以在构造函数中更容易地执行此操作,并避免使用controller.service_arguments标记(必须为explicitly added services.yml中的控制器定义。