Zend framework Zend Framework:获取空参数

Zend framework Zend Framework:获取空参数,zend-framework,Zend Framework,假设我有以下请求URI:/controller/action/filter// 当我在控制器中调用$this->_getParam'filter'时,它将返回NULL。但是,我希望它返回一个空字符串。 我是否遗漏了一些明显的内容?\u getParam可以接受第二个可选参数,该参数包含默认返回值。请参见此处的注释: 所以$this->_getParam'filter'应该可以满足您的需要 编辑:谢谢你的澄清,明白了。不确定是否有一种特别干净的方法来做您想要的事情-查看Zend_Controlle

假设我有以下请求URI:/controller/action/filter//

当我在控制器中调用$this->_getParam'filter'时,它将返回NULL。但是,我希望它返回一个空字符串。
我是否遗漏了一些明显的内容?

\u getParam可以接受第二个可选参数,该参数包含默认返回值。请参见此处的注释:

所以$this->_getParam'filter'应该可以满足您的需要

编辑:谢谢你的澄清,明白了。不确定是否有一种特别干净的方法来做您想要的事情-查看Zend_Controller_Request_Abstract的代码,我可以看到如果没有值,它会显式地从参数列表中删除键,因此没有简单的方法来判断它是否从控制器中存在。类似于下面的内容可以完成这项工作,但有点难看。如果可能的话,您最好为筛选参数使用一个显式的“重置”值,这样您就可以以更理智的方式捕获它,而不仅仅是一个空字符串

// if '/filter/' is in the request URI, but has no value
if (strpos($_SERVER["REQUEST_URI"],'/filter/') && !$this->_hasParam('filter'))
{
  // code to reset filter
}
// if filter is in the request *and* has a value
elseif ($this->_hasParam('filter'))
{
  // code to use filter value from request
}
else
{
  // code to get filter from session
}

_getParam可以接受第二个可选参数,该参数包含默认返回值。请参见此处的注释:

所以$this->_getParam'filter'应该可以满足您的需要

编辑:谢谢你的澄清,明白了。不确定是否有一种特别干净的方法来做您想要的事情-查看Zend_Controller_Request_Abstract的代码,我可以看到如果没有值,它会显式地从参数列表中删除键,因此没有简单的方法来判断它是否从控制器中存在。类似于下面的内容可以完成这项工作,但有点难看。如果可能的话,您最好为筛选参数使用一个显式的“重置”值,这样您就可以以更理智的方式捕获它,而不仅仅是一个空字符串

// if '/filter/' is in the request URI, but has no value
if (strpos($_SERVER["REQUEST_URI"],'/filter/') && !$this->_hasParam('filter'))
{
  // code to reset filter
}
// if filter is in the request *and* has a value
elseif ($this->_hasParam('filter'))
{
  // code to use filter value from request
}
else
{
  // code to get filter from session
}

我知道第二个参数是默认值。但是,当URL中未设置参数筛选器时,它将返回。这意味着我无法检查参数是否基于返回值给出。如果未提供筛选器参数,则应从会话中获取筛选器。当filter参数为空时,它应该清除过滤器。我知道我可以通过实际检查请求URI来解决它,但我希望有一个更优雅的解决方案。感谢您指出可能没有更好的方法。我知道第二个参数是默认值。但是,当URL中未设置参数筛选器时,它将返回。这意味着我无法检查参数是否基于返回值给出。如果未提供筛选器参数,则应从会话中获取筛选器。当filter参数为空时,它应该清除过滤器。我知道我可以通过实际检查请求URI来解决它,但我希望有一个更优雅的解决方案。谢谢你指出,也许没有更好的办法了。