0

我一直在谷歌搜索,似乎找不到任何可以很好地解释 ZF 路由器使用的东西。我已经阅读了网站上的文档,它似乎只谈论重新路由。

我正在尝试制作格式: /module/value/controller/action 给 /module/controller/action 传递值作为参数

例如,/store/johnsmithbigsale/home/newstuff 将路由到/store/home/newstuff,将johnsmithbigsale 作为值传递给具有隐藏命名空间(例如storeName)的参数。

一些帮助将是巨大的!

4

1 回答 1

2

您可以使用Zend_Controller_Router_Route将您的 url 部分映射到可以通过 $this->_getParam('varName') 在控制器中使用的模块、控制器、动作和参数。您可以在 application.ini 文件或应用程序引导程序中定义这些路由。

// custom city route
$route = new Zend_Controller_Router_Route(
    'cities/:city',
    array(
        'controller' => 'city',
        'action'     => 'view'
    )
);
$this->addRoute('city', $route);

// custom buy widgets route
$route = new Zend_Controller_Router_Route_Regex(
    'buy_(.+)_widgets/([0-9]+)(.*)',
    array(
        'controller' => 'widgets',
        'action'     => 'view'
    ),
    array(
        1 => 'nothing',
        2 => 'widget_id',
        3 => 'vars'
    )
);
$this->addRoute('widgets', $route);

正则表达式路由是特定于我的应用程序的,但您可以看到每个匹配项都可以映射到一个参数。

于 2010-04-18T02:39:08.137 回答