Yii验证:在没有Ajax警告文本的情况下直接抛出PHP错误

时间:2012-08-18 03:43:10

标签: php yii

当尝试提交新的Active记录实例并将其保存到数据库表时,我得到了直接的PHP错误消息,没有我期望的AJAX警告文本。这让我很困惑。 PHP错误消息是:

mb_strlen() expects parameter 1 to be string, array given 

它指向... Yii1.8 \ framework \ validators \ CStringValidator.php中的第72行,这是:

 $length=mb_strlen($value, $this->encoding ? $this->encoding : Yii::app()->charset);

然后,在接下来的几行中,PHP错误继续指向我的AR类中的这一行(第209行):

205   $AttributesList = $saveArticleHistory->attributes;
206         $article_history->attributes = $AttributesList;
207         $article_history->article_id = $saveArticleHistory->id;
208         $article_history->id = null;         
209         return $article_history->save();

但我的理解是,如果AR实例无法保存到数据库,则会引发Ajax警告(如果我们在视图中发出Ajax错误消息)。但这里会直接显示警告信息 ?你能帮我解决这个困惑吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

Yii不处理PHP错误,只有例外。以下是与此问题相关的一些链接:link1link2。对于这个特殊情况,我认为在将$value传递给mb_strlen之前检查{{1}}是否为字符串要好得多。