伶俜 2009-8-24 17:44
Comment créer des objets eZ Publish en PHP
J'ai découvert il n'y a pas très longtemps la fonction [url=http://pubsvn.ez.no/doxygen/trunk/html/classeZContentFunctions.html#0850acaf97f8360721ede6fea371c642]eZContentFunctions::createAndPublishObject()[/url] de l'API [url=http://pwet.fr/tags/keywords/weblog/ez_publish]eZ Publish[/url]. Cette fonction bien cachée (et enfin documentée depuis la résolution [url=http://issues.ez.no/12261]de ce bug[/url]) permet de créer facilement des objets de contenus. Quand je pense que tout le travail est mâché par cette fonction, [url=http://projects.pwet.fr/index.php/p/pwet/source/tree/HEAD/trunk/www/extension/pwet2/modules/comments/add.php#L53]ça en fait des lignes de codes inutiles[/url]... Par exemple, pour créer un objet de la classe de contenu [url=http://ez.no/doc/ez_publish/technical_manual/4_x/reference/content_classes/media/file]File[/url], ces quelques lignes suffisent :
[code]<?php
$params = array();
$params['parent_node_id'] = 52; // node id of /Media/Files
$params['class_identifier'] = 'file';
$params['creator_id'] = 14; // admin
$params['storage_dir'] = '/tmp/data/'; // don't forget the ended /
$params['section_id'] = 3; // section media
$attributesData = array();
$attributesData['name'] = 'My file';
$attributesData['file'] = 'my_file.txt';
$params['attributes'] = $attributesData;
$contentObject = eZContentFunctions::createAndPublishObject( $params );
?>[/code]
Chaque élément du tableau $attributesData contient les valeurs des attributs du futur objet de contenu sous le format attendu par [url=http://pubsvn.ez.no/websvn2/filedetails.php?repname=nextgen&path=%2Ftrunk%2Fdoc%2Ffeatures%2F3.9%2Fto_from_string_datatype_functionality.txt]la méthode fromString() de chaque datatype[/url]. Et voila, ce n'est pas plus compliqué que ça ! Dommage [url=http://issues.ez.no/15330]qu'il n'existe pas encore l'équivalent pour mettre à jour les objets de contenu existants[/url].