php实现动态路由,php-Symfony 2动态路由(例如,商店)

我是Symfony 2的新手,现在我正在尝试获得动态路由,我的意思是真正的动态.

例如:

example.com/en/categoryLevel1/categoryLevel2/categoryLevel3/productId-ProductName

要么

example.com/en/categoryLevel1/categoryLevel2/productId-ProductName

要么

example.com/en/categoryLevel1/categoryLevel2/categoryLevel3/

类别级别的数量(类别深度)必须灵活到100%.必须有可能并且能够使用一个级别到二十个级别.

设置入口的入口在哪里(哪些类在做那些路由工作)?

另一个示例是:

旧页面上的路线:

example.com/{categoryLvl1}/{categoryLvl2}/…/p-{productId}

在新页面上,对路线进行了一些更改:

example.com/{lang}/{catLevel1}/{catLevel2}/…/{productId}-{productName}

我如何做正则表达式等.我知道.但是我在symfony中找不到路由过程(更好的是预路由过程).我想建立一个预路由类并回退“普通” symfony2路由.我必须匹配旧的和新的,两者都是完全动态的..旧的用ZF1编写(对我来说很容易),但是symfony2对我来说是一个新领域…

解决方法:

假设您有一个处理此类URL的包,则可以在包的routing.yml中添加以下内容(我更喜欢yml,YMMV).

YourSomethingBundle_main_any:

pattern: /{request}

defaults: { _controller: YourSomethingBundle:Main:dispatcher }

requirements:

request: ".*"

重要:这是一个“包罗万象”的功能,可让您在控制器中处理实际的请求路径.您应该在模式路径之前添加前缀,或者在所有其他捆绑包之后加载该捆绑包,否则其他路由将不再起作用.

根据SF2约定,您现在将拥有一个带有dispatcherAction方法的MainController类:

namespace Your\SomethingBundle\Controller;

use \Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MainController extends Controller

{

public function dispatcherAction($request='')

{

$request = preg_split('|/+|', trim($request, '/'));

// ... and so on.

}

}

标签:symfony,dynamic,php,routing

来源: https://codeday.me/bug/20191121/2051621.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值