0

新しいアクティブ レコード インスタンスを送信してデータベース テーブルに保存しようとすると、予想どおり、AJAX 警告テキストのない直接的な PHP エラー メッセージが表示されました。それは私を本当に混乱させます。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 エラー メッセージが表示されている場合)。しかし、ここでは警告メッセージが直接表示されますか? この混乱を手伝ってくれませんか?ありがとうございました。

4

1 に答える 1

0

Yii は PHP エラーを処理せず、今のところ例外のみを処理します。この問題に関連するリンクは次のとおりです: link1link2$valueこの特定のケースでは、に渡す前に文字列かどうかを確認する方がはるかに良いと思いますmb_strlen

于 2012-08-18T21:20:18.017 に答える