Zend Framework路由-传递隐藏参数


Zend Framework Routing - passing hidden params

我想通过URL助手和路由器传递额外的参数,因此这些参数不会出现在地址栏中,但可以通过getParam调用访问

我的路线如下-注意标签ID,我想通过隐形通过

        'router' => array(
        'routes' => array(
            'tag' => array(
                'route' => '/tag/:tag',
                'defaults' => array(
                    'module' => 'default',
                    'controller' => 'tags',
                    'action' => 'profile',
                    'tag'   => '',
                    'tagID' => ''
                )
            )
        )

URL帮助程序指定TagID

url(数组('tag'=>$tag,'tagID'=>$v->id),'tag',true)?>

基本上这是可能的,然后得到地址栏显示

localhost.com/tag/php

但是控制器可以访问标签和标签ID参数?

干杯

Ian

据我所知,这是不可能的。没有任何地方可以隐藏任何变量,因为您正在处理一个标准的GET请求。这实际上是关于http协议,而不是Zend。

有两种方法可以在URL之间移动数据/状态:GET(即编码到实际URL中)和POST.

由于POST请求在这里不合适,不幸的是,您遇到了可见的URL参数,或者从接收页面上的标签名称重建标签ID的问题。

如果为每个标记添加一个路由,则可以为它们分配默认值,并且不需要在url中显式定义它们。

像这样(foreach标签):

        'route' => '/tag/php',
        'defaults' => array(
            'module' => 'default',
            'controller' => 'tags',
            'action' => 'profile',
            'tag'   => 'php',
            'tagID' => 'phpID'
        )

在操作中使用:
$tagId = $this->_getParam('tagId', 'yourDefaultValue');