我了解如何以以下形式创建简单的自定义路线
example.com/archive/:year
但是,我需要以以下形式创建路线
example.com/:make/:model
两个路径组件都是变量。同时我想保留默认的 Zend Framework 路由。我该怎么办?
谢谢
我了解如何以以下形式创建简单的自定义路线
example.com/archive/:year
但是,我需要以以下形式创建路线
example.com/:make/:model
两个路径组件都是变量。同时我想保留默认的 Zend Framework 路由。我该怎么办?
谢谢
如果您使用基于模块的文件架构,您可以维护 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;
}
不适用于zend,但该技术具有指导意义并且可能会起作用。我也一直在努力解决这个问题,但更多的是为了国际化。
http://darrenonthe.net/2011/05/06/dynamic-routing-from-database-in-codeigniter/
基本上,您将您的路由缓存到一个文件中,然后框架将它们与您的控制器/变量详细信息相匹配。我尝试了很多东西,复杂的正则表达式,最后,这真的非常非常好。对你来说可能也是一个很好的解决方案。
您需要强制执行一些条件,即模型是整数类型或其他类型。像这样
$route = new Zend_Controller_Router_Route(
':make/:model',
array(
'controller' => 'car',
'action' => 'logic'
),
array('make' => '\d+')
);
如果你不能用这些额外的条件来区分它们,那么软件是如何为你处理它的动作名称或制作的呢?