当前位置: 首页 > 知识库问答 >
问题:

Symfony 4全局路由前缀

仲柏
2023-03-14

我在Symfony 4应用程序中找不到有关全局路由前缀的任何信息。我唯一发现的是用@route注释控制器。但我不使用注释,我需要所有控制器都具有相同的前缀。

现在我可以在S3中这样在app/config/routing中实现。yml文件:

app:
    resource: '@AppBundle/Controller/'
    type: annotation
    prefix: /foo

但是S4是没有捆绑的,我不能做同样的事情——我必须创建一个我不需要的捆绑。

是否可以在Symfony 4中定义一个全局路由前缀,或者我将在每个根目录前添加前缀/创建一个自定义路由加载器,尤其是在YAML中配置路由时?

共有3个答案

赖诚
2023-03-14

有几种方法可以实现任何路由的前缀。它们的不同主要是由于它们所针对的路线类型。

对于由批注定义的路由,您需要编辑config/routes/annotations。yaml并将前缀放在那里:您的前缀键值对。

对于由YAML列表定义的路由,您需要编辑配置/routes.yaml将其放在新的路由前缀下:您的前缀键值对和资源:路由/routes-that-you-want-to-be-prefixed.yaml并创建文件路由/routes-that-you-want-to-be-prefixed.yaml具有所有路由,然后从配置/routes.yaml中删除所有路由,除了使用资源的路由/routes-that-you-want-to-be-prefixed.yaml

如果你很匆忙,想检查前缀,你也可以使用快速和肮脏的方法。编辑src/Kernel.php并为所有$routes-加上后缀

为了回答这个问题,我用一些示例代码示例编写了一个全面的描述:在子目录中使用反向代理运行symfony5

示例代码片段已经针对Symfony 4.4和Symfony 5.1进行了测试,并且没有任何问题。

子车文康
2023-03-14

我可能不理解这个问题,因为我不知道你为什么要在你的应用程序中使用全局前缀。即使您使用的是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

bin/控制台调试:路由器将产生

blog_show          ANY      ANY      ANY    /blog/show     
blog_list          ANY      ANY      ANY    /blog/list  

但我还是怀疑你在要求别的东西。也许你可以给你的问题加一个例子?

孙佐
2023-03-14

这适用于注释,为每个控制器提供“This/prefix”:

# file: config/routes/annotations.yaml

controllers:
    resource: ../../src/Controller/
    type: annotation
    prefix: this/prefix

然后,对于导入的路由,“this/prefix”将应用于下面所有FOSUserBundle的路由(是的,我测试了它)。

# file: config/routes.yaml

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
    prefix: this/prefix

如果不使用注释,则应该能够将前缀应用于资源中的所有内容,从而导入单独的路由文件(可以导入更多)。但请删除“@”符号,并使用文件的相对路径。“this/prefix”的值可以配置为服务容器参数,请参见此处:http://symfony.com/doc/current/routing/service_container_parameters.html

 类似资料:
  • 本文向大家介绍ASP.NET Core MVC 配置全局路由前缀,包括了ASP.NET Core MVC 配置全局路由前缀的使用技巧和注意事项,需要的朋友参考一下 ASP.NET Core MVC 配置全局路由前缀 前言 大家好,今天给大家介绍一个 ASP.NET Core MVC 的一个新特性,给全局路由添加统一前缀。严格说其实不算是新特性,不过是Core MVC特有的。 应用背景 不知道大家在

  • 问题内容: 我比以往更加谨慎,因为我对过去的行为感到困惑。 我在Mac上,并通过安装的node.js 。 现在,我想在命令行中作为命令运行,我发现完成此操作的规范方法是成功运行此输出的: 后来 由于没有在我的身体里。 1)为什么没有安装全局 路径到路径?也许是的,但是确实有一些事情弄糟了。我在哪里可以找到? 2)我应该这样做吗?(附加到我底部的) 看来这不是正确的方法,因为如果以后再安装其他东西(

  • 问题内容: 我刚刚开始学习React,我试图创建一个SPA博客,该博客具有全局定位的固定标头。 因此,每条路线都具有相同的标题,并且从我的角度背景来看,我将在ui-view之外使用标题。 在每个单独的页面组件中导入标头组件是一个好习惯,还是可以在我的标头组件上添加标头组件? 更新: 我当时在想使用这样的东西: 路线组件,我在其中定义路线: 然后在主要的Index.js文件上,我想呈现如下内容: 有

  • 我知道本身不会向路由表添加路由。在您的操作中,您需要声明属性。我很难找到一个权威的blog/msdn页面/说明为什么by defalut不在路由表中添加路由的东西。 有没有人有一个权威的帖子,确实包含了这种情况,如果是这样,你会让我知道是谁。非常感谢。 编辑以澄清我的问题 上面的场景之所以能够工作,是因为我们显式地声明了上的操作有一个空路由。一旦我们这样做,路由就被添加到 第一个场景不起作用,因为

  • 问题内容: 我相信过去我发现了传递给它的选项,以使其输出用于(全局模块)的路径。有人知道这样的选择吗?还是使用其他任何获取全局路径前缀的方法? 我知道全局模块在我的计算机上的位置(),通常只需要花费几分钟就可以在其他计算机上找到全局模块:通常已正确配置,如果没有,那么找个办法解决问题。但是,是否存在某种快速的方法来说明其构建方式以及它用于全局模块的路径? 问题答案: 将返回路径。

  • Rails 路由全解 本文介绍面向用户的 Rails 路由功能。 读完本文,你将学到: 如何理解 routes.rb 文件中的代码; 如何使用推荐的资源式,或使用 match 方法编写路由; 动作能接收到什么参数; 如何使用路由帮助方法自动创建路径和 URL; 约束和 Rack 端点等高级技术; 1 Rails 路由的作用 Rails 路由能识别 URL,将其分发给控制器的动作进行处理,还能生成路