我正在设置一个自定义路由,它为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"
答案 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"