Symfony 4-自定义文件夹结构和服务
我希望实现一个由推荐的文件夹结构 我想要的结构类似于下面的结构Symfony 4-自定义文件夹结构和服务,symfony,symfony4,Symfony,Symfony4,我希望实现一个由推荐的文件夹结构 我想要的结构类似于下面的结构 src/ Domain/ User/ UserEntity.php UserController.php Pages/ DefaultPageController.php 其思想是在逻辑上对功能/名称空间或类似内容进行分组。我似乎得到了这个错误: 文件“./src/Controller”不存在于/Users/dev/Sites/web/html/s
src/
Domain/
User/
UserEntity.php
UserController.php
Pages/
DefaultPageController.php
其思想是在逻辑上对功能/名称空间或类似内容进行分组。我似乎得到了这个错误:
文件“./src/Controller”不存在于/Users/dev/Sites/web/html/sandbox/php/crud/config中的/Users/dev/Sites/web/html/sandbox/php/crud/config/services.yaml中(加载在resource/Users/dev/Sites/web/html/sandbox/php/crud/config/services.yaml中)
我不确定将这些作为服务连接起来有多重要。如果我注释掉services.yaml
的App\Controller
属性,它就会消失
如何使用
src/Domain/Feature/FeatureController.php
结构在service.yaml中加载控制器?当然,您可以回到过去,单独定义每个控制器服务:
# config/services.yaml
Domain\Feature\FeatureController:
tags: ['controller.service_arguments']
然而,一旦您习惯了autowire,那么拼写每个服务都是一件痛苦的事情。或者,您可以使用自动配置功能将控制器标记添加到选定的类中。首先声明一个空接口,并让控制器实现它:
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');
当然,这只是解决了控制器问题。您可能会遇到许多其他与autowire相关的问题。我会去创建一个像Cerad建议的控制器界面。但是,由于您不必触摸内核:
services:
_instanceof:
YourApp\Ui\ControllerInterface:
public: true
tags: ['controller.service_arguments']
瞧