很好奇是否有人知道实现以下内容的最佳方法:我在zend framework 1.12应用程序中有一个参数,它有效地控制了事物的"范围",并且是我数据库中每个表中的一个字段,用于表示行的范围。它是一个简单的整数变量,可以被认为是"buildingID",因此它控制我们正在使用的"building"。
在一个插件中,我有:
Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('building', DYNAMIC_INT);
它满足了我的需要。当我使用URL视图助手构建URL时,我有我的参数,但它总是在参数列表的末尾。我知道从编程的角度来看这是微不足道的,但我如何实现将这个全局参数"预处理"到我的url参数?
site.com/admin/controller/action/param1/xyz/param2/xyz/building/2
成为
site.com/admin/controller/action/building/2/param1/xyz/param2/xyz ?
对任何想法都持开放态度。如果你想让我重载url视图帮助程序,你能提供一些示例代码吗?因为我在设置这个类时遇到了问题。
谢谢大家!
您可以使用自定义路由来实现这一点。在引导文件中的某个位置设置路由:
$route = new Zend_Controller_Router_Route(
':controller/:action/building/:building/*'
);
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute('building', $route);
然后,假设在使用url视图助手之前的某个时刻调用了以下内容。。。
Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('building', DYNAMIC_INT);
您可以将路由指定为助手的第二个参数:
echo $this->url(array(
'controller' => 'admin',
'action' => 'controller',
'param1' => 'xyz',
'param2' => 'xyz',
), 'building');
// /admin/controller/building/1/param1/xyz/param2/xyz