url重写-Zend路由/url帮助程序.在URL中首先显示一个全局参数



很好奇是否有人知道实现以下内容的最佳方法:我在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

最新更新