に関連する問題がありCActiveForm::validate()
ます。フォームがあり、Ajax を使用してデータベースにデータを送信すると、フォームには複数選択可能なドロップダウン リストが含まれます。コントローラーのデータ保存セクションで、最初に次のエラーが発生しました
mb_strlen() expects parameter 1 to be string, array given (.../framework/validators/CStringValidator.php:84)
フレームワークを新しいバージョンに更新した後、そのエラーはなくなり、代わりに以下の検証メッセージが表示されました。
Category Ids is invalid.
フォームが完全に入力されている場合 (つまり、モデル内のすべてのルールが満たされている場合)、そのようなバグやエラー メッセージは生成されません。
コントローラーアクション
public function actionCompany() {
$model = new Company;
if (isset($_POST['Company'])) {
$model->attributes = $_POST['Company'];
$category_ids = "";
if (is_array($_POST['Company']['category_ids']))
$category_ids = implode(',', $_POST['Company']['category_ids']);
$model->category_ids = $category_ids;
if ($model->validate()) {
/*$temp = Company::model()->findByPK($model->id);
if ($temp !== null) {
$model = $temp;
}*/
$model->save();
echo CJSON::encode(array('status' => 'success'));
Yii::app()->end();
} else {
$error = CActiveForm::validate($model);
if ($error != '[]')
echo $error;
}
}
}
モデル ルール
public function rules()
{
return array(
array('...., category_ids,...', 'required'),
array('..., category_ids, ...', 'length', 'max'=>255),
....
.....
array('...., category_ids,...', 'safe', 'on'=>'search'),
);
}
実際に私が見逃しているものは何ですか?