Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Pimcore-在preUpdateObject钩子中获取旧对象状态_Php_Content Management System_Zend Framework_Pimcore - Fatal编程技术网

Php Pimcore-在preUpdateObject钩子中获取旧对象状态

Php Pimcore-在preUpdateObject钩子中获取旧对象状态,php,content-management-system,zend-framework,pimcore,Php,Content Management System,Zend Framework,Pimcore,我需要比较当有人保存对象时,对象的某个属性是否发生了更改。我编写了一个插件,可以在更新后端对象之前和之后添加一些功能 所以,我不知道这是不是像预期的那样起作用,还是我弄错了 我想在将状态保存到数据库之前,我会在以下位置获取状态: function preUpdateObject(Object_MyObject $object) {} 以及对象的新状态 function postUpdateObject(Object_MyObject $object) {} 但这不起作用: public fu

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

所以,我不知道这是不是像预期的那样起作用,还是我弄错了

我想在将状态保存到数据库之前,我会在以下位置获取状态:

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   
   }
}

有什么线索可以告诉我如何在更新之前获取旧对象状态吗

此函数似乎没有按预期工作。我提交了一份bug报告:

我创建了一个可以使用的变通方法

数据库未更新。因此,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']);
使用生成的对象类不起作用,但如果清除缓存,则会起作用

// 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();