我有一段时间以来一直在写一个项目,我使用了默认路由,即:module \:controller:\:action。 过了一段时间,我在配置中添加了一些路由器,如:
resources.router.routes.page.route = "page/:slug"
resources.router.routes.page.defaults.module = "default"
resources.router.routes.page.defaults.controller = "pages"
resources.router.routes.page.defaults.action = "view"
resources.router.routes.page.defaults.slug = ""
但是,之后,当我点击视图URL帮助器生成的某个链接时,其中一条新路由忽略了一些给定的参数。例如,我有路线:
resources.router.routes.project.route = "project/:slug"
resources.router.routes.project.defaults.module = "projects"
resources.router.routes.project.defaults.controller = "projects"
resources.router.routes.project.defaults.action = "view"
resources.router.routes.project.defaults.slug = ""
如果我去链接/项目/测试,那么链接如下:
$this->url(
array('module' => 'admin', 'action' => 'list-users', 'controller' => 'users')
, null,true
);
将指向“/ project”
是否有可能在自定义路由之上维护默认路由?我可以添加一些与默认路由器相同的默认路由器吗?这可能很简单,但我可能会错过这一点。谢谢你的帮助。
我添加了类似的内容,但没有效果:
resources.router.routes.default.route = ":module/:controller/:action"
resources.router.routes.default.defaults.module = "default"
resources.router.routes.default.defaults.controller = "pages"
resources.router.routes.default.defaults.action = "view"
resources.router.routes.default.defaults.slug = ""
答案 0 :(得分:0)
为了设置自定义路由,您需要获取路由器组件并将路由传递给它。
这就是我在我正在进行的项目中所做的事情。在Bootstrap类中,创建以下函数
protected function _initRoutes()
{
$this->bootstrap('frontcontroller');
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$myRoutes = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini','production');
$router->addConfig($myRoutes,'routes');
这会调用前端控制器并从中获取路由器。然后我将路由配置传递给它。
我希望这能回答你的问题。
答案 1 :(得分:0)
问题是url helper的选项如下:
url($urlOptions, $name, $reset)
因此,当您将$name
设置为null
时,会使用当前路线('project'
)。事件设置$reset
到true
不会有所帮助。将null
替换为'default'
,它应该有效。