首页
学习
活动
专区
工具
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
{
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2分4秒

SAP B1用户界面设置教程

6分33秒

088.sync.Map的比较相关方法

1分21秒

11、mysql系列之许可更新及对象搜索

1分10秒

PS小白教程:如何在Photoshop中制作透明玻璃效果?

1分28秒

PS小白教程:如何在Photoshop中制作出镂空文字?

54秒

PS小白教程:如何在Photoshop中制作出光晕效果?

22分13秒

JDBC教程-01-JDBC课程的目录结构介绍【动力节点】

6分37秒

JDBC教程-05-JDBC编程六步的概述【动力节点】

7分57秒

JDBC教程-07-执行sql与释放资源【动力节点】

6分0秒

JDBC教程-09-类加载的方式注册驱动【动力节点】

25分56秒

JDBC教程-11-处理查询结果集【动力节点】

19分26秒

JDBC教程-13-回顾JDBC【动力节点】

领券