sup*_*r.t 1 php symfony symfony-routing symfony4
我在Symfony 4应用程序中找不到有关全局路由前缀的任何信息。我发现的唯一一件事就是用注释控制器@route。但是我不使用注释,并且我需要所有控制器具有相同的前缀。
现在,我可以在S3中像在app/config/routing.yml文件中这样:
app:
resource: '@AppBundle/Controller/'
type: annotation
prefix: /foo
Run Code Online (Sandbox Code Playgroud)
但是S4是没有捆绑的,我不能做同样的事情-我将不得不创建一个不需要的捆绑包。
是否有可能在Symfony 4中完全定义全局路由前缀,否则我最终将为每个单个根前缀/创建自定义路由加载器,特别是如果我在YAML中配置路由时呢?
我可能不明白这个问题,因为我不知道你为什么要在你的应用程序中使用全局前缀。即使您使用的是 yaml 并且没有包,您也可以在导入路由文件时设置前缀。
# config/routes.yaml
blog:
resource: '../src/Resources/config/routes/blog.yaml'
prefix: blog
# src/Resources/config/routes/blog.yaml
blog_show:
path: /show
controller: App\Controller\BlogController::show
blog_list:
path: /list
controller: App\Controller\BlogController::list
Run Code Online (Sandbox Code Playgroud)
bin/控制台调试:路由器会产生
blog_show ANY ANY ANY /blog/show
blog_list ANY ANY ANY /blog/list
Run Code Online (Sandbox Code Playgroud)
但同样,我怀疑你是在要求别的东西。也许您可以为您的问题添加一个示例?
这适用于注释,为每个控制器赋予“ this / prefix”:
# file: config/routes/annotations.yaml
controllers:
resource: ../../src/Controller/
type: annotation
prefix: this/prefix
Run Code Online (Sandbox Code Playgroud)
然后对于导入的路由,“ this / prefix”将应用于以下所有FOSUserBundle的路由(是的,我已经对其进行了测试)。
# file: config/routes.yaml
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
prefix: this/prefix
Run Code Online (Sandbox Code Playgroud)
如果您不使用注释,则应该能够导入单独的路由文件(该文件可以导入更多文件),并将前缀应用于资源中的所有内容。但是删除“ @”符号,并使用文件的相对路径。可以将“ this / prefix”的值配置为“ 服务容器参数”,请参见此处:http : //symfony.com/doc/current/routing/service_container_parameters.html