1

我了解如何以以下形式创建简单的自定义路线

example.com/archive/:year

但是,我需要以以下形式创建路线

example.com/:make/:model

两个路径组件都是变量。同时我想保留默认的 Zend Framework 路由。我该怎么办?

谢谢

4

3 回答 3

0

如果您使用基于模块的文件架构,您可以维护 zend 框架的默认路由,并为您的模块添加自定义路由。

例如

class Example_Bootstrap extends Zend_Application_Module_Bootstrap
{

public function _initModuleRoutes()
{
    $this->bootstrap('FrontController');
    $frontController = $this->getResource('FrontController');
    $router = $frontController->getRouter();

    $route = new Zend_Controller_Router_Route(
        'modulename/:action/*',
        array(
                'module' => 'modulename',
                'controller' => 'modulecontroller',
                'action' => 'index'
        )
    );
    $router->addRoute('routename', $route);

    return $router;
}
于 2012-05-11T02:17:53.173 回答
0

不适用于zend,但该技术具有指导意义并且可能会起作用。我也一直在努力解决这个问题,但更多的是为了国际化。

http://darrenonthe.net/2011/05/06/dynamic-routing-from-database-in-codeigniter/

基本上,您将您的路由缓存到一个文件中,然后框架将它们与您的控制器/变量详细信息相匹配。我尝试了很多东西,复杂的正则表达式,最后,这真的非常非常好。对你来说可能也是一个很好的解决方案。

于 2012-05-11T01:56:56.367 回答
0

您需要强制执行一些条件,即模型是整数类型或其他类型。像这样

 $route = new Zend_Controller_Router_Route(
    ':make/:model',
    array(
        'controller' => 'car',
        'action'     => 'logic'
    ),
    array('make' => '\d+')
);

如果你不能用这些额外的条件来区分它们,那么软件是如何为你处理它的动作名称或制作的呢?

于 2012-05-11T04:07:58.950 回答