0

所以我正在提交一个表单,我正在尝试检查一个字段是否为空,我这样做:

if(empty($this->_getParam('my_field')))

而且它不起作用,但是如果我只使用它就可以了$_POST['my_field]

<b>Fatal error</b>: Can't use method return value in write context in....

$this->_getParam为了工作,我应该怎么做?因为我猜这不是$_POST在框架上使用的好选择。

4

4 回答 4

4

这是你的问题:Can't use method return value in write context

这是一个很好的解释为什么必须这样做:Can't use method return value in write context

要使用 empty() 您必须首先获取返回值

$field = $this->_getParam('my_field');
if(empty($field)){
  //is empty
}

(更新:这不是 PHP 版本 >= 5.5 的问题) empty($this->_getParam('my_field')) 可以正常工作。

于 2012-11-08T21:24:25.117 回答
1

其他答案都是正确的。一种替代方法是为您的调用提供默认值_getParam(),例如null. 然后你可以打电话

is_null($this->_getParam('myfield',null))

这种方法可能更可取,因为 Zend 已经确定了该参数的空性。

于 2012-11-08T21:29:54.497 回答
1

empty-like isset- 不是真正的功能,而是一种语言结构。所以你只能使用变量作为它的唯一参数(没有表达式,没有函数结果)。

但是,您可以使用临时变量:

$my_field = $this->_getParam('my_field');
if(empty($my_field))
....
于 2012-11-08T21:25:10.763 回答
0

您可以使用临时变量

$field = $this->_getParam('my_field');

if(empty($field)){
  //you code here
}
于 2012-11-08T22:24:07.120 回答