Zend框架:获得一个空的参数

时间:2010-01-04 14:21:43

标签: zend-framework

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

当我在控制器中调用$ this-> _getParam('filter')时,它将返回NULL。但是,我希望它返回一个空字符串。 我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

_getParam()可以使用保存默认返回值的第二个可选参数。请参阅此处的说明:http://framework.zend.com/manual/en/zend.controller.action.html#zend.controller.action.accessors

所以$this->_getParam('filter','')应该做你需要的。

编辑:感谢澄清,抓住了。不确定是否有一种特别干净的方式来做你想做的事情 - 查看Zend_Controller_Request_Abstract的代码我可以看到它明确地删除了参数列表中的密钥,如果它没有值,所以没有简单的方法来判断它来自控制器。像下面这样的东西会完成这项工作,但会变得有点丑陋(你可能最好使用一个明确的'reset'值作为你的filter参数,这样你就能以更加理智的方式捕获它,而不仅仅是一个空字符串,如果那可能吗?)。

// 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
}