假设我有以下请求URI:/ controller / action / filter //
当我在控制器中调用$ this-> _getParam('filter')时,它将返回NULL。但是,我希望它返回一个空字符串。 我错过了一些明显的东西吗?
答案 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
}