如何使用Zend Framework设置简单的自定义路由?

时间:2010-04-13 00:23:05

标签: php model-view-controller zend-framework routing

我正在设置一个自定义路由,它为Zend_Application提供隐式参数名称。基本上,我有一个传入的URL,如下所示:

/StandardSystems/Dell/LatitudeE6500

我希望将其映射到StandardsystemsController,我希望该控制器能够传递参数"make" => "Dell""model" => "LatitudeE6500"

如何使用Zend_Application和Zend_Controller_Router设置这样的系统?

编辑:我没有清楚地解释自己 - 如果make和model不存在我想将用户重定向到StandardsystemsController上的另一个动作。目前,在application.ini中使用Ballsacian1的答案:

resources.router.routes.StandardSystem.route = "/StandardSystem/:make/:model"
resources.router.routes.StandardSystem.defaults.controller = "StandardSystem"
resources.router.routes.StandardSystem.defaults.action = "system"
resources.router.routes.StandardSystem.defaults.make = ""
resources.router.routes.StandardSystem.defaults.model = ""
resources.router.routes.StandardSystemDefault.route = "/StandardSystem"
resources.router.routes.StandardSystemDefault.defaults.controller = "StandardSystem"
resources.router.routes.StandardSystemDefault.defaults.action = "index"

2 个答案:

答案 0 :(得分:4)

您首先要实例化一个新的Zend_Controller_Router_Route来创建您的路线。

$stdsys_route = new Zend_Controller_Router_Route(
    '/StandardSystems/:make/:model',
    array(
        'controller' => 'StandardsystemsController',
        'action' => 'myaction'
    );
);

然后需要将此路由添加到路由器中。

$front_controller = Zend_Controller_Front::getInstance();
$front_controller->getRouter()->addRoute('stdsys', $stdsys_route);

现在,当您发送时,路线应该生效。

参考文献:

答案 1 :(得分:3)

资源:

resources.router.routes.StandardSystems.route = "/StandardSystems/:make/:model"
resources.router.routes.StandardSystems.defaults.controller = "standardsystems"
resources.router.routes.StandardSystems.defaults.action = "index"