Php actionCreate被多次调用-Yii
我遇到了一个错误,每当我提交gii生成的字段时,我的模型都会多次保存。我已经创建了一个错误日志,这样我就可以看到多次调用的内容,并且我发现actionCreate函数是我代码中被调用三次(尽管有时两次)的部分。当我填写表单并单击提交时,错误日志显示actionCreate函数被调用了三次Php actionCreate被多次调用-Yii,php,yii,Php,Yii,我遇到了一个错误,每当我提交gii生成的字段时,我的模型都会多次保存。我已经创建了一个错误日志,这样我就可以看到多次调用的内容,并且我发现actionCreate函数是我代码中被调用三次(尽管有时两次)的部分。当我填写表单并单击提交时,错误日志显示actionCreate函数被调用了三次 The controller form looks like this /** * Creates a new model. * If creation is successful, t
The controller form looks like this
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate()
{
$model=new Account;
error_log("How many times do I call actionCreate");
// To-Do make the user account creation update via ajax
// $this->performAjaxValidation($model);
if(isset($_POST['Account']))
{
$model->attributes=$_POST['Account'];
if($model->save())
{
echo 'do we reach here';
$this->redirect(array('index','id'=>$model->id));
}
}
$this->render('create',array(
'model'=>$model,
));
}
我的表格也是这样的
<?php
/* @var $this AccountController */
/* @var $model Account */
/* @var $form CActiveForm */
?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'account-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>true,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'name'); ?>
<?php echo $form->textField($model,'name',array('size'=>40,'maxlength'=>40)); ?>
<?php echo $form->error($model,'name'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'mobile_comp'); ?>
<?php echo CHtml::dropDownList(CHtml::activeName($model,'mobile_comp'), $select,
$model->providerOptions, array('empty'=>'(Select Your Provider')); ?>
<?php echo $form->error($model,'mobile_comp'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'msisdn'); ?>
<?php echo $form->textField($model,'msisdn'); ?>
<?php echo $form->error($model,'msisdn'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'pin'); ?>
<?php echo $form->textField($model,'pin'); ?>
<?php echo $form->error($model,'pin'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'company'); ?>
<?php echo $form->textField($model,'company',array('size'=>40,'maxlength'=>40)); ?>
<?php echo $form->error($model,'company'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'balance'); ?>
<?php echo $form->textField($model,'balance',array('size'=>40,'maxlength'=>40)); ?>
<?php echo $form->error($model,'balance'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
带*的字段是必需的
错误出现在我的表单中,我将ajaxValidation=>true而不是ajaxValidation=>false
我不小心用一个字段多次调用了ActionCreate函数 因为您在第行中发表了评论:
// To-Do make the user account creation update via ajax
// $this->performAjaxValidation($model);
函数$this->performAjaxValidation($model)如果通过Ajax请求,代码>将验证表单数据,并将验证结果作为JSON返回,并提前停止应用程序执行
在您的情况下,若正在进行Ajax验证,那个么并没有什么需要检查的验证,问题是保存您的模型
只需取消注释$this->performAjaxValidation($model)代码>
另外:请添加函数代码$this->performAjaxValidation($model)
我们不知道“每当我创建一个新领域”应该是什么意思。谢谢你解释这个困惑。