【问题标题】:Multiple subdirectories for controllers in annotations.yamlannotations.yaml 中控制器的多个子目录
【发布时间】:2021-11-23 07:41:42
【问题描述】:

我正在尝试在 Symfony 5.3 应用程序中更多地组织我的控制器。它们位于几个子目录中,并使用注释进行路由。以下是一些示例:

  • ../src/StuffA/Controller/ControllerA.php
  • ../src/StuffB/Controller/ControllerB.php

我现在想在我的annotations.yaml 中指定两者。我尝试了几种方法,但找不到任何有效的方法:

通配符 - 不起作用

controllers:
    resource: '../../src/*/Controller'
    type: annotation

多路径 - 不起作用

controllers:
    resource: '../../src/{StuffA,StuffB}/Controller'
    type: annotation

单一路径 - 仅适用于一个控制器

controllers:
    resource: '../../src/StuffA/Controller'
    type: annotation

任何提示我做错了什么?

【问题讨论】:

    标签: php symfony symfony-routing


    【解决方案1】:

    只需创建多个资源键。

    例如:

    # annotations.yaml
    controllersFoo:
        resource: ../../src/Foo/Controller/
        type: annotation
    
    controllersBar:
        resource: ../../src/Bar/Controller/
        type: annotation
    

    我认为注释加载器不能使用通配符或 glob 模式。

    【讨论】:

    • 我最终可能会拥有多达 10 个这样的文件夹。关于如何在不单独指定每个文件夹的情况下使其工作的任何其他想法?
    • 拥有 10 个密钥似乎不是什么大问题,IMO。我不使用注释/属性,所以我的所有配置都按照我想要的方式组织,与代码分开。
    • 只是在这里进行排序,当您决定将控制器移动到其他地方时,我支持使用路由文件而不是注释的概念。我使用单动作控制器并将这些文件放在对我最有意义的地方。没有控制器目录。我曾经提出过使用自动配置从控制器文件中加载路由的想法,但没有成功。
    • 好的,我现在将在注释中使用多个路径。可能会切换到 routing.yml。我只是喜欢在控制器内指定路由以将所有内容都放在同一个地方。不过,我会在 routing.yml 中寻找好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多