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类:

<?php

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.
    }
}
上一篇:linux-Graphhopper服务器-创建和使用自定义车辆类型


下一篇:php – Silex路由.htaccess webroot