0

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

1 回答 1

0

当您使用时$this->url,您实际上是在使用function urlfrom library/Zend/View/Helper/Url.php,其第一行是:

$router = Zend_Controller_Front::getInstance()->getRouter();

由于您声明了自定义admincategories路由,因此您现在有 2 个来访问这些特定的模块/控制器/操作:

  • 默认 - 可通过zfmul/public/admin/categories;
  • 自定义 - 可通过zfmul/public/admin-cate/.

根据您用于访问的 URL,$router变量值将相应更改,$this->url您所遇到的调用结果也会相应更改。

以下是对 SO 问题的一些参考,可能会帮助您解决该行为:

于 2013-07-02T10:27:40.437 回答