【问题标题】:Zend clear Request ParametersZend 清除请求参数
【发布时间】:2011-09-27 15:07:17
【问题描述】:

我只是想问一下为什么 Zend_Controller_Action 动作方法里面有以下内容:

$request = $this->getRequest();
$params = $request->getParams();
var_dump($params);
foreach ($params as $key => &$value) {
    $value = null;
}
var_dump($params);
$request->setParams($params);
var_dump($request->getParams());

产生这个:

array
  'controller' => string 'bug' (length=3)
  'action' => string 'edit' (length=4)
  'id' => string '210' (length=3)
  'module' => string 'default' (length=7)
  'author' => string 'test2' (length=5)

array
  'controller' => null
  'action' => null
  'id' => null
  'module' => null
  'author' => null

array
  'author' => string 'test2' (length=5)

“作者”变量不应该也被清除吗?

提前致谢!

【问题讨论】:

    标签: php zend-framework parameters front-controller


    【解决方案1】:

    getParams 方法如下所示。发生的情况是您正在清除内置参数(控制器、操作等),但该方法始终返回 GET 和 POST 变量。

    /**
     * Retrieve an array of parameters
     *
     * Retrieves a merged array of parameters, with precedence of userland
     * params (see {@link setParam()}), $_GET, $_POST (i.e., values in the
     * userland params will take precedence over all others).
     *
     * @return array
     */
    public function getParams()
    {
        $return       = $this->_params;
        $paramSources = $this->getParamSources();
        if (in_array('_GET', $paramSources)
            && isset($_GET)
            && is_array($_GET)
        ) {
            $return += $_GET;
        }
        if (in_array('_POST', $paramSources)
            && isset($_POST)
            && is_array($_POST)
        ) {
            $return += $_POST;
        }
        return $return;
    }
    

    【讨论】:

    • 有类似 clearPost 方法的东西吗? setPost 不接受空值:/
    • 你可以使用 $request->setParamSources(array());这会影响上面的 $paramSources - 如果将其设置为空数组,则不会检索 GET 和 POST 数据。如果其他代码依赖于 getParams,您可能需要将其设置回包括 GET 和 POST。
    • 我的意思是清除请求对象中的所有 POST 和 GET 数据。我已经自己编写了它们,但也许还有其他方式,Zend Developers 将如何完成这些事情?
    【解决方案2】:

    要清除参数,您只需调用:

    $request->clearParams(); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多