Zend Routing / URL helper。首先在URL中显示全局参数

时间:2013-02-25 14:40:37

标签: zend-framework url-rewriting zend-route zend-view zend-router

好奇是否有人知道实现以下内容的最佳方法:我的zend framework 1.12应用程序中有一个参数可以有效地控制事物的“范围”,并且是我的数据库中每个表中的一个字段来表示范围一排它是一个简单的整数变量,可以被认为是“buildingID”,因此它控制着我们正在使用的“建筑物”。

在插件中,我有:

Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('building', DYNAMIC_INT);

完成了我的需要。当我使用URL view-helper构建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视图助手,可以提供一些示例代码,因为我在设置此类时遇到了问题。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

您可以使用custom route来完成此操作。在引导程序文件中的某处设置路由:

$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