0

很好奇是否有人知道实现以下内容的最佳方法:我在我的 zend 框架 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 view helper,你能提供一些示例代码吗,因为我在设置这个类时遇到了麻烦。

谢谢你们!

4

1 回答 1

0

您可以使用自定义路由来完成此操作。在引导文件中的某处设置路由:

$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
于 2013-02-26T04:04:40.283 回答