Zend框架路由 - 传递隐藏的参数

时间:2011-06-05 17:01:55

标签: php zend-framework

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

我的路线在下面 - 注意我希望通过

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

URL帮助程序指定TagID

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

基本上这可以让地址栏显示

localhost.com/tag/php

但是控制器可以访问tag和tagID参数吗?

干杯

伊恩

3 个答案:

答案 0 :(得分:1)

如果您为每个标记添加路线,则可以为它们指定默认值,您无需在网址中明确定义它们。

像这样(foreach标签):

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

答案 1 :(得分:1)

据我所知,这是不可能的。由于您正在处理标准的GET请求,因此无处可隐藏任何变量。这真的是关于http协议,而不是Zend。

在网址之间移动数据/状态有两种方法:GET(即编码到实际的URL和POST。

由于这里的POST请求不合适,您可能会遇到可见的URL参数,或者从接收页面上的标签名称重建tagID。

答案 2 :(得分:0)

在你的行动中使用:
$tagId = $this->_getParam('tagId', 'yourDefaultValue');