我正在根据最新的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;
答案 0 :(得分:2)
如果要将各种服务注入控制器,可以在构造函数中更容易地执行此操作,并避免使用controller.service_arguments
标记(必须为explicitly added services.yml中的控制器定义。