This site has been archived and you can no longer log in or post new messages. For up-to-date community resources please visit

eZ Community » Forums » Developer » [Solved] Modify/Update objects from PHP

[Solved] Modify/Update objects from PHP

[Solved] Modify/Update objects from PHP

Wednesday 20 January 2010 11:14:41 am - 5 replies

Hi there,

I would like to know how can we do, to modify existing objects directly in PHP ?

To create Nodes It's really simple using eZContentFunctions::createAndPublishObject (thanks to Damien Pobel for the tip : )

Is there a simple way to update nodes like this ?

Otherwise, does someone have a method to do that ?

I need to update selected fields in my class and to store my modifications.

It is for a cronjob.



Modified on Wednesday 20 January 2010 2:51:54 pm by Damien MARTIN

Wednesday 20 January 2010 12:01:04 pm

take a look at data import extension - it has very clean code to do that

Wednesday 20 January 2010 2:51:29 pm

Thank you Gaetano,

Thanks to ImportOperator::save_eZ_attribute, I discovered what I was waited for :

$contentObjectAttribute->fromString( $value );

Where $contentObjectAttribute is retrieved from :


after a simple :

$object = eZContentObject::fetchByNodeID($node_id);

The values are correctly updated !

Thank you again.

Monday 25 January 2010 9:52:46 am


I'm trying to do the same (not for a cronjob but for an eZ extension) but unsuccesful...

$object= eZContentObject::fetchByNodeID($node_id);
$dataMap = $object->dataMap();
$contentObjectAttribute = ImportOperator::save_eZ_attribute($dataMap['MyObject_relation_list']);
$value = '206-207-213';
$contentObjectAttribute->fromString( $value );

I get:

Non-static method ImportOperator::save_eZ_attribute() should not be called statically

Someone can help ?

Modified on Monday 25 January 2010 9:55:05 am by Laurent Dorier

Monday 25 January 2010 10:12:44 am

Hi Laurent,

I have not used directly the classes from the extensions but I have extract it to my own class.

save_eZ_attribute is not static so, you should call it from an ImportOperator instance :

function save_eZ_attribute( $contentObjectAttribute )

Otherwise, this my version of the method :

 * Sauve un attribut eZ d'un objet avec une nouvelle valeur.
 * Cette méthode à l'avantage de gérer complétement les ObjectRelations et les RelationList.
 * \arg $contentObjectAttribute Pointeur sur un attribut d'un objet
 * \arg $value La valeur au format TXT
 * \author Mugo Web Copyright (C) 2008 => extension data_import (
function save_eZ_attribute( $contentObjectAttribute, $value )
    switch( $contentObjectAttribute->attribute( 'data_type_string' ) )
        case 'ezobjectrelation':
            // Remove any exisiting value first from ezobjectrelation
            eZContentObject::removeContentObjectRelation( $contentObjectAttribute->attribute('data_int'),
            $contentObjectAttribute->setAttribute( 'data_int', 0 );
        case 'ezobjectrelationlist':
            // Remove any exisiting value first from ezobjectrelationlist
            $content = $contentObjectAttribute->content();
            $relationList =& $content['relation_list'];
            $newRelationList = array();
            for ( $i = 0; $i < count( $relationList ); ++$i )
                $relationItem = $relationList[$i];
                eZObjectRelationListType::removeRelationObject( $contentObjectAttribute, $relationItem );
            $content['relation_list'] =& $newRelationList;
            $contentObjectAttribute->setContent( $content );
    // fromString returns false - even when it is successfull
    // create a bug report for that
    $contentObjectAttribute->fromString( $value );

I hope this will help you.


Monday 25 January 2010 10:54:38 am

Thanks a lot Damien,

working like a charm. happy.gif Emoticon

But finally... I do it without this extension using the eZContentObject class...
Thanks anyway for your very fast answer.

Modified on Monday 25 January 2010 10:58:47 am by Laurent Dorier


You must be logged in to post messages in this topic!

36 542 Users on board!

Forums menu

Proudly Developed with from