在application \ modules \ admin \ layouts \ scripts \ layout.phtml
中<?php echo $this->url(array('action'=>'logout','controller'=>'user','module'=>'admin'),null,true);?>
当我访问zfmul / public / admin-cate /时,它返回
/zfmul/public/admin-cate/logout
但是当我访问zfmul / public / admin / categories时,它会返回
/zfmul/public/admin/user/logout
并且两个url渲染到同一个模块,同一个控制器,同样的动作,我想知道为什么它会重新推出不同的结果?
我在application.ini,
中做了一些配置resources.router.routes.admincategories.route = "admin-cate/:action/:id"
resources.router.routes.admincategories.defaults.module = "admin"
resources.router.routes.admincategories.defaults.controller = "categories"
resources.router.routes.admincategories.defaults.action = "index"
resources.router.routes.admincategories.reqs.action = "save|edit|index|new"
resources.router.routes.admincategories.defaults.id = "1"
resources.router.routes.admincategories.reqs.id = "\d+"
答案 0 :(得分:0)
当您使用$this->url
时,您实际上正在使用 library / Zend / View / Helper / Url.php 中的function url
,其第一行是:
$router = Zend_Controller_Front::getInstance()->getRouter();
由于您声明了自定义admincategories
路由,因此您现在有2个访问这些特定模块/控制器/操作:
zfmul/public/admin/categories
; zfmul/public/admin-cate/
访问。根据您用来访问的网址,$router
变量值会相应更改,因此您遇到$this->url
电话的结果也会发生变化。
以下是有关SO的问题的一些参考,可能有助于您解决这种行为: