zend framework this-> url在同一页面上获取不同的url但不同的url

时间:2013-07-02 08:20:38

标签: zend-framework url

在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+"

1 个答案:

答案 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的问题的一些参考,可能有助于您解决这种行为: