我一直在努力解决路由问题,因此构建了一个小应用程序来摆弄,但我设法偶然发现了一个问题。
整个测试的目标是隐藏 url 'hostname/content/index/add' 并将其转换为像 'hostname/wms/content/add' 这样的用户更容易理解的 url。
但是现在由于某些奇怪的原因,我无法使用 $this->url() 方法进行重定向。但不知何故,像 somelink 这样的正常链接可以工作。
我在 application.ini 中构建了一些路由来测试它是如何工作的。没什么好看的...
resources.router.routes.contentroute.route = "/wms/content"
resources.router.routes.contentroute.defaults.module = content
resources.router.routes.contentroute.defaults.controller = index
resources.router.routes.contentroute.defaults.action = index
resources.router.routes.vacaturesroute.route = "/wms/vacatures"
resources.router.routes.vacaturesroute.defaults.module = vacatures
resources.router.routes.vacaturesroute.defaults.controller = index
resources.router.routes.vacaturesroute.defaults.action = index
所以当我输入hostname/wms/content 时,我会被重定向到内容模块的IndexController,它是IndexAction。这适用于我的视图中指向这样的内容模块的所有链接
<a href='wms/content/'> link </a>
但是,它不适用于 3 个链接,这些链接实际上重定向到该页面主机名/wms/内容上的 IndexController 的特定操作。
<a href="<?php echo $this->url(array('controller'=>'index','action'=>'add'));?>">Add new content</a>
我没有真正重定向到 IndexController 中的添加操作,而是重定向到主机名/wms/内容,这就是我来自的页面。
任何人都知道为什么会发生这种情况以及可能的解决方法?还是我完全以错误的方式接近这个?