1

当有人保存它时,我需要比较我的对象的某个属性是否发生了变化。我编写了一个插件,以便能够在更新后端对象之前和之后添加一些功能。

所以,我不知道这是否没有按预期工作,或者我是否弄错了。

我以为我会在将状态保存到数据库之前获得状态:

function preUpdateObject(Object_MyObject $object) {}

以及对象的新状态

function postUpdateObject(Object_MyObject $object) {}

但这不起作用:

public function preUpdateObject(Object_MyObject $object) {
   $this->tempOldDate = $object->getUpdate();
}

public function postUpdateObject(Object_MyObject $object){
   if($this->tempOldDate->compareDate($object->getUpdate()) == -1) {
   // do something because a newer date has been entered   
   }
}

有什么线索可以在更新之前获取旧对象状态吗?

4

1 回答 1

0

似乎此功能未按预期工作。我提交了一个错误报告: http ://www.pimcore.org/issues/browse/PIMCORE-1232

我创建了一个可以使用的解决方法。

数据库未更新。所以 preUpdateObject 是用来获取对象状态的函数是正确的,但是:

检查数据库是否未更新....我想要位于表“object_1”中的对象的日期

// oldDate has the old value
$dbAdapter = Pimcore_Resource_Mysql::get("database");
$dbentry = $dbAdapter->fetchRow(
              $dbAdapter->select()
                        ->from('object_1')
                        ->where('o_id = ?', $object->getId()));     
$oldDate = new Pimcore_Date($dbentry['update']);

使用生成的 Object 类不起作用,但如果您清除缓存,它会起作用

// get's the new date from the editor 
$oldDate = Object_MyObject::getById($object->getId())->getUpdate();
// this also works but don't know if it is safe to delete
// the object from the registry
Zend_Registry::set('object_' . $object->getId(), false);
$oldDate = Object_MyObject::getById($object->getId())->getUpdate();     
于 2011-12-02T14:04:59.143 回答