【问题标题】:Zend Routing / URL helper . Have a global parameter show up first in URLZend 路由/URL 助手。在 URL 中首先显示一个全局参数
【发布时间】:2016-08-17 00:55:22
【问题描述】:

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

谢谢大家!

【问题讨论】:

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


    【解决方案1】:

    您可以使用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
    

    【讨论】:

    • 效果很好。感谢您的提示...我现在非常清楚需要做什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多