首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在CakePHP中,如何确定编辑操作中的字段是否已更改?

在 CakePHP 中,可以使用 eventBehavior (内置的行为) 来确定编辑操作中的字段是否已更改。首先,在模型中,你可以创建一个新的行为,通过继承 Behavior 基类来扩展或实现与修改相关的逻辑,然后注册模型并启用行为。

在模型上(例如 Article Model)定义一个 Behavior:

代码语言:php
复制
<?php

namespace App\Model\Behavior;

use Cake\Event\EventInterface;
use Cake\ORM\Behavior;
use Cake\ORM\Table;

class ArticleAttributeBehavior extends Behavior
{
    public function beforeSave($event, $entity)
    {
        if ($this->_isFieldDirty('title', $entity)) {
            $this->getEvent()->extra["field\_changed"] = 'title';
        } else if ($this->_isFieldDirty('body', $entity)) {
            $this->getEvent()->extra["field\_changed"] = 'body';
        }

        parent::beforeSave($event, $entity);
    }

    private function _isFieldDirty($field, $entity)
    {
        $oldData = $entity->original($field);
        $newData = $entity->{$field};

        return $oldData !== $newData;
    }
}

然后,在 Model 中使用注册此 Behavior,并启用它:

代码语言:scss
复制
use Cake\ORM\Table;
use Cake\Datasource\EntityInterface;

class ArticlesTable extends Table
{
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券