首页 > 解决方案 > 在 Symfony 中创建新的文件夹结构

问题描述

我想通过这样的文件夹来分隔 Symfony 中的部分:

src
 - Blog
  -- Controller
  -- Entity
  -- Form
  -- Repository
 - Main
  -- Controller
  -- Entity
  -- Form
  -- Repository

使用 bundle 我不能在控制器和实体中使用注释,也不能在我的博客中单独使用 make:entity。有没有办法在 symfony 4 中创建这种结构?

标签: phpsymfonysymfony-4.3

解决方案


由于 Symfony 是一个 PHP 框架并且不强加任何选择,只要Composer 自动加载器能够加载它们,您就可以自由地将您的类放置在您喜欢的任何地方。您可能还必须配置包以在其他命名空间/位置中查找对象。默认情况下,它们在您的应用程序中配置为从预定义的文件结构中加载。

例如,当您的实体位于 中时src/Blog/Entity/Post,它可能应该具有完全限定的类名,例如App\Blog\Entity\Post. 然后,您必须调整默认的 Doctrine 配置以加载具有此类命名空间的实体:

doctrine:
    # ...
    orm:
        # ...
        mappings:
            Blog:
                is_bundle: false
                type: annotation

                # before:
#               dir: '%kernel.project_dir%/src/Entity'
#               prefix: 'App\Entity'
#               alias: App

                # after:
                dir: '%kernel.project_dir%/src/Blog/Entity'
                prefix: 'App\Blog\Entity'
                alias: Blog

另一个示例,您必须更改路由配置,以便它在以下位置查找控制器App\Blog\Controller

blog_routes:
    resource: '../src/Blog/Controller/'
    type:     annotation

推荐阅读