我已经写了一个
项目一段时间了,我使用了默认的路由,: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
);
将指向"/项目"
是否有可能在自定义路由之上维护默认路由?我可以添加一些与默认路由器相同的默认路由器吗?这可能很简单,但我可能错过了重点。感谢您的所有帮助。
我添加了这样的东西,但没有效果:
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 = ""
为了设置自定义路由,您需要获取路由器组件并将路由传递到其中。
这就是我在我正在从事的一个项目中所做的。在引导类中,创建以下函数
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');
这将调用前端控制器并从中获取路由器。然后我将我的路由配置传递到其中。
我希望这能回答你的问题。
问题是 url 帮助程序的选项如下:
url($urlOptions, $name, $reset)
因此,当您将$name
设置为 null
时,将使用当前路由 ('project'
)。不是事件设置$reset
true
会有所帮助。将null
替换为'default'
,它应该可以工作。