Php 在Symfony中创建新文件夹结构
我想在Symfony中按如下文件夹分隔我的分区:Php 在Symfony中创建新文件夹结构,php,symfony,symfony-4.3,Php,Symfony,Symfony 4.3,我想在Symfony中按如下文件夹分隔我的分区: src - Blog -- Controller -- Entity -- Form -- Repository - Main -- Controller -- Entity -- Form -- Repository 对于bundle,我不能在controller和entity中使用注释,也不能在我的博客中单独使用make:entity。有没有办法在symfony 4中创建此结构?由于symfony是一个P
src
- Blog
-- Controller
-- Entity
-- Form
-- Repository
- Main
-- Controller
-- Entity
-- Form
-- Repository
对于bundle,我不能在controller和entity中使用注释,也不能在我的博客中单独使用make:entity。有没有办法在symfony 4中创建此结构?由于symfony是一个PHP框架,不强加任何选择,只要能够加载类,您就可以将类随意放置在任何地方。您可能需要配置包,以便在其他名称空间/位置查找对象。默认情况下,它们在应用程序中配置为从预定义的文件结构加载 例如,当您的实体位于
src/Blog/entity/Post
中时,它可能应该具有完全限定的类名,如App\Blog\entity\Post
。然后,您必须加载具有以下名称空间的实体:
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
由于Symfony是一个PHP框架,不强加任何选择,因此只要能够加载类,您就可以将类随意放置在任何地方。您可能需要配置包,以便在其他名称空间/位置查找对象。默认情况下,它们在应用程序中配置为从预定义的文件结构加载 例如,当您的实体位于
src/Blog/entity/Post
中时,它可能应该具有完全限定的类名,如App\Blog\entity\Post
。然后,您必须加载具有以下名称空间的实体:
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
这完全有可能,您只需使用稍微复杂的配置即可:
# services for all src/*/ directories, ecxluding
App\:
resource: '../src/*'
exclude:
- ../src/Tests/
- ../src/Kernel.php
- '../src/*/{Entity,Migrations}'
App\Blog\Controller\:
resource: '../src/Blog/Controller'
tags: ['controller.service_arguments']
# repeat for other sub-directories
# App\Main\Controller\:
要使用Maker捆绑包,请为其提供更具体的路径
# config/packages/dev/maker.yaml
# create this file if you need to configure anything
maker:
# tell MakerBundle that all of your classes lives in an
# Acme namespace, instead of the default App
# (e.g. Acme\Entity\Article, Acme\Command\MyCommand, etc)
root_namespace: 'App\Blog\'
由于它仍然是同一个应用程序,您可以通过将其反转并按节对每种类型的类进行分组来避免“假捆绑”布局:
src/
- Controller/
-- Blog/
-- Main/
- Entity
-- Blog/
-- Main/
这不需要对标准样式进行任何配置更改。完全有可能,您只需使用稍微复杂的配置即可:
# services for all src/*/ directories, ecxluding
App\:
resource: '../src/*'
exclude:
- ../src/Tests/
- ../src/Kernel.php
- '../src/*/{Entity,Migrations}'
App\Blog\Controller\:
resource: '../src/Blog/Controller'
tags: ['controller.service_arguments']
# repeat for other sub-directories
# App\Main\Controller\:
要使用Maker捆绑包,请为其提供更具体的路径
# config/packages/dev/maker.yaml
# create this file if you need to configure anything
maker:
# tell MakerBundle that all of your classes lives in an
# Acme namespace, instead of the default App
# (e.g. Acme\Entity\Article, Acme\Command\MyCommand, etc)
root_namespace: 'App\Blog\'
由于它仍然是同一个应用程序,您可以通过将其反转并按节对每种类型的类进行分组来避免“假捆绑”布局:
src/
- Controller/
-- Blog/
-- Main/
- Entity
-- Blog/
-- Main/
这将不需要对标准样式进行任何配置更改。因为它可能主要是关于类的,所以改编composer.json和config/services.yaml应该足够了,回到Symfony 2的好ole时代,我们曾经使用bundle来处理这类内容。BlogBundle、MainBundle等。您仍然可以,但有很好的理由表明bundle在应用程序级别已经消失了。如果您想要一个不同的布局,那么使用您的操作系统支持的任何“makedirectory”命令并开始调整。我想你可能会发现这并不值得你这么做。你是在问如何手动创建文件夹吗?如果是,请删除您的问题,因为这不是该网站。如果您正试图使用代码,请对此进行解释,并展示一些您尝试过的代码。:)因为它可能主要是关于类的,所以改编composer.json和config/services.yaml应该足够了,因为在Symfony 2的好ole时代,我们曾经使用bundle来处理这类东西。BlogBundle、MainBundle等。您仍然可以,但有很好的理由表明bundle在应用程序级别已经消失了。如果您想要一个不同的布局,那么使用您的操作系统支持的任何“makedirectory”命令并开始调整。我想你可能会发现这并不值得你这么做。你是在问如何手动创建文件夹吗?如果是,请删除您的问题,因为这不是该网站。如果您正试图使用代码,请对此进行解释,并展示一些您尝试过的代码。:)