Php 仅当表单的任何字段发生更改时,如何更新标志

Php 仅当表单的任何字段发生更改时,如何更新标志,php,yii,Php,Yii,如果表单的任何字段未更改,则将标志设置为1;如果表单的任何字段更改,则将标志设置为0。以下是我的看法: <div class="row"> <?php echo $form->labelEx($model,'name'); ?> <?php echo $form->textField($model,'name'); ?> <?php echo $form->error($model,'name'); ?>

如果表单的任何字段未更改,则将标志设置为1;如果表单的任何字段更改,则将标志设置为0。以下是我的看法:

<div class="row"> 
   <?php echo $form->labelEx($model,'name'); ?> 
   <?php echo $form->textField($model,'name'); ?> 
   <?php echo $form->error($model,'name'); ?> 
</div> 
<div class="row"> 
   <?php echo $form->labelEx($model,'email'); ?> 
   <?php echo $form->textField($model,'email'); ?> 
   <?php echo $form->error($model,'email'); ?> 
</div>
如果您使用的是Y1.1

通过创建两个名为beforeSave和afterFind的函数,可以在模型中实现这一点。Yii将在保存记录之前和查找记录之后自动调用此函数

您的策略是在找到记录时复制该记录,并在更新记录之前,使用以前的值检查表单中的当前值

class User extends CActiveRecord
{  
    public $oldRecord;

    public function afterFind()
    {
        $this->oldRecord=clone $this;
        return parent::afterFind();     
    }

    public function beforeSave()
    {
        if ($this->oldRecord->email !== $this->email) {
            $this->changed_record_flag = true;
        }    
    }

}

请提供您自己已经尝试过的任何代码。请添加必要的代码/references@Ayush更新您的问题。更新您的问题我的问题是,如果我在创建时输入了多个文本字段,但在更新时我不会更改/输入任何字段如何通过此更改列的状态,如果未更改/输入任何字段,则将标志列设置为0,否则设置为1。我想这次我的问题很清楚。