我正在寻求实现Nikola Posa推荐的文件夹结构。
我想要的结构如下所示。
src/
Domain/
User/
UserEntity.php
UserController.php
Pages/
DefaultPageController.php
这个想法是从逻辑上对功能/名称空间或类似内容进行分组。我似乎收到此错误:
/ Users / dev / Sites / web / html /中的文件“ ../src/Controller”不存在(在:/ Users / dev / Sites / web / html / sandbox / php / crud / config中) sandbox / php / crud / config / services.yaml(已加载到资源“ /Users/dev/Sites/web/html/sandbox/php/crud/config/services.yaml”中)。
我不确定将这些作为服务进行连接的重要性。如果我注释掉App\Controller
的{{1}}属性,它将消失。
如何在具有services.yaml
结构的service.yaml中加载控制器?
答案 0 :(得分:1)
您当然可以放学,只需要分别定义每个控制器服务:
# config/services.yaml
Domain\Feature\FeatureController:
tags: ['controller.service_arguments']
但是,一旦习惯了自动布线,然后拼出每个服务就很痛苦。或者,您可以使用自动配置功能将控制器标签添加到选定的类。首先声明一个空接口,然后让您的控制器实现该接口:
interface ControllerInterface {}
class SomeController implements ControllerInterface
然后调整src / Kernel.php
# src/Kernel.php
class Kernel {
protected function build(ContainerBuilder $container)
{
$container->registerForAutoconfiguration(ControllerInterface::class)
->addTag('controller.service_arguments');
当然,这只是解决控制器问题。您可能还会遇到许多其他与自动装配相关的问题。
答案 1 :(得分:1)
我会去创建一个像Cerad建议的Controller界面。但是,由于Symfony 3.3,您不必接触内核:
services:
_instanceof:
YourApp\Ui\ControllerInterface:
public: true
tags: ['controller.service_arguments']
瞧!