わかりました。とても簡単に思えることで助けが必要ですが、私には理解できません。
AJAX フォームを埋め込もうとしている Yii のページがあります。ページ A としましょう。フォームは 1 つの値を受け取り、問題がなければそれを検証して DB に保存する必要があります。
これまでのところ、私が考え出したことは次のとおりです。
フォームはビュー _form.php にあり、CActiveForm と次のような ajaxSubmitButton が含まれています。
<?php echo CHtml::ajaxSubmitButton('submit', $this->createUrl('/site/something'), array('update'=>'#targetdiv'));?>
フォームは、次のように別の A のビュー内で呼び出されます。
<?php echo $this->renderPartial('/site/_form', array('AModel'=>$model)); //Passing some info about A ?>
コントローラーのアクションサムシングでは、次のことを行っています。
if (Yii::app()->request->isAjaxRequest) {
$model = new AJAXForm('submit');
if (isset($_POST['AJAXForm'])) {
$model->attributes = $_POST['AJAXForm'];
if ($model->validate()) {
//When data's valid, save to DB is working fine. This part is working perfectly.
}
else {
//This is the part I'm confused about and that's not working
/*Trying to render the form to get the error messages and summary displayed
but nothing's showing */
$this->renderPartial('/site/_form', array('AModel'=>$model));
Yii::app()->end();
}
}
}
Firebug では、エラーが発生すると、応答に部分的にレンダリングされたフォーム全体が再び含まれていることがわかります。ただし、targetdiv は更新されたフォームで更新されず、エラー メッセージが表示されます。
actionController で何か間違ったことをしているような気がしますが、何が原因かわかりません。AJAX で送信されたフォームの完全な例も表示できると助かります。
ありがとう!