我仍然在与ajax形式和Yii挣扎。 我得到错误Undefined变量:model。我的表单是另一个视图另一个视图renderPartial本身的renderPartial。
这里的细节
在我的POST控制器中
public function actionViewComment()
{
$post=$this->loadModel();
$comment=new Comment;
$this->renderPartial('_viewComment',array(
'model'=>$post,
'comment'=>$comment,
));
}
_viewcomment.php调用commment / _form.php
<?php $this->renderPartial('/comment/_form',array(
'model'=>$comment,
)); ?>
在_form.php中,可以访问变量$ model 有一个按钮在单击时调用jquery函数send()
函数send() {
var data=$("#comment-form").serialize();
$.ajax({
type: 'POST',
url: '<?php echo Yii::app()->createAbsoluteUrl("post/Ajax"); ?>',
data:data,
success:function(data){
alert("Data Saved");
},
error: function(data) { // if error occured
alert("Error occured.please try again");
alert(data);
},
dataType:'html'
});
}
后置控制器的actionAjax包含
public function actionAjax()
{
if(isset($_POST['Comment']))
{
if($model->validate())
{
$model->save();
return;
}
}
}
在Ajax的操作中,我得到了错误Undefined variable:model。我不明白为什么?
如果我使用$ model = new Comment;因为$ model为空,所以不保存数据
你能解释一下吗?添加
$model=new Comment;
$model->attributes = $_POST["Comment"];
我发出以下错误
DbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 19 tbl_comment.status may not be NULL. The SQL statement executed was: INSERT INTO 'tbl_comment' ("author", "email", "url", "content", "create_time") VALUES (:yp0, :yp1, :yp2, :yp3, :yp4) (C:\wamp\www\yii\framework\db\CDbCommand.php:358)</p><pre>#0 C:\wamp\www\yii\framework\db\ar\CActiveRecord.php(1077): CDbCommand->execute()
提前感谢您的帮助。
答案 0 :(得分:1)
在actionAjax
中,您必须为Comment
创建模型对象。您没有创建$ mode,但是您正在调用它们的函数。
public function actionAjax()
{
if(isset($_POST['Comment']))
{
$model=new Comment;
$model->attributes = $_POST["Comment"];
if($model->validate())
{
$model->save();
echo "saved";
}
else
{
echo "Failed";
}
}
}