FLUX RSS



ACCUEIL / FORUMS / QUESTIONS TECHNIQUES / CREATEANDPUBLISHOBJECT() ET CHAMPS DE TYPE XMLBLOCK




sondages
Avez-vous déjà utilisé les exports statiques ? :
oui
non
RESULTATS | SONDAGES
liens
eZ systems
http://ez.no
PHPEdit
http://www.waterproof.fr/
AFUL
http://www.aful.org
Framasoft
http://www.framasoft.net
createAndPublishObject() et champs de type xmlblock

Vous devez être connecté pour utiliser le forum. Vous pouvez le faire ici.

Auteur Message

Peggy Gadiou

Mercredi 11 Juin 2008 5:25:50 pm

createAndPublishObject() et champs de type xmlblock

Bonjour,

J'utilise ezpublish 4.

Je suis en train de créer un import de données automatique et j'utitlise pour cela la fonction createAndPublishObject() de la classe eZContentFunctions.
Lorsque j'insère des données dans des champs dont le datatype est text bloc ou text line ou mail ou url ou image tout fonctionne à merveille !! mais dès que je veux insérer du texte (plusieurs lignes avec balises html) dans un champ de datatype xmlbloc, rien ne se fait !!

merci de m'aider au mieux...

Peggy

riastudio.fr

Philippe VINCENT-ROYOL

Mercredi 11 Juin 2008 5:48:50 pm

Re: createAndPublishObject() et champs de type xmlblock

Bonsoir,

En effet il faut transformer ton texte en xml comprehensible pour ezpublish .. bon je vais te donner une partie du code que j utilise pour le faire

//fetch
$testnode = eZFunctionHandler::execute( 'content', 'node', array( 'node_id' => $obj->attribute('main_node_id')));
$testobject =& $testnode->object();
				
$parser = new eZSimplifiedXMLInputParser( $testobject->attribute( 'id' ), true);
$parser->setParseLineBreaks( true );
					
$texte = $rows[$i][$value2];
$txt_ini = $texte;
				
$texte = nettoyage($texte);
								
$doc = $parser->process($texte);
// Creation de la structure xml
if(!is_object($doc))
{				
	echo "\r\nno dom document returned by xml parser\r\n";
        $errors = $parser->getMessages();
         foreach ( $errors as $error )
         {
             	echo '* ' . $error . "\r\n";
        }
	echo $txt_ini;
	echo "###################";
	echo $texte;
	echo "@@@@@@@@@@@@@@@@@@@";
	echo string_convert($texte);
  }
            
            $xmlstring = eZXMLTextType::domString( $doc );
			
				foreach( $testobject->contentObjectAttributes() as $contentObjectAttribute )
				{
					if(isset($xmlstring) && $xmlstring!=""
					{
						if( array_search($contentObjectAttribute->attribute( 'contentclass_attribute_identifier' ),$valid)!==FALSE)
						{
							$contentObjectAttribute->setAttribute( 'data_text', $xmlstring );
							$contentObjectAttribute->store();
						}
					}
				}


bon il y a des lignes que tu peux supprimer mais l idee est là.. en gros tu crees ton objet sans remplir les champs xml
tu recuperes l id de l objet que tu viens de creer
et via le code tu remplis les champs xml

(la fonction nettoyage verifie que mes balises html soit correct.. si tu as un texte du type <p><u>texte </p> ezpublish ne va pas du tout aimer )

Si besoin de plus d aide contacte moi par mail : vincent.royol@gmail.com

A+

Peggy Gadiou

Mercredi 11 Juin 2008 6:11:57 pm

Re: createAndPublishObject() et champs de type xmlblock

Est-il possible alors de modifier les valeurs en bon xml avant de tout transmettre à la fonction create.. ??? car ca m'éviterais de tout recoder...
mais si il faut passer par là...

Autre question, est-ce qu'avec ta méthode tu as pu enregistrer des images...

Merci

riastudio.fr

Philippe VINCENT-ROYOL

Jeudi 12 Juin 2008 10:08:44 am

Re: createAndPublishObject() et champs de type xmlblock

Selon cette methode il te faut l id de l objet. Donc celà sera dur de tout balancer d un coup.

Pour les fichiers j utilise le createAndPublishObject comme suit:

$attributes_file = array( 'name' =>$nom_fichier,
				'credit' => '',
				'file' => $fichier
			);

$params_file['creator_id'] = 14;
$params_file['parent_node_id'] = $object->attribute("main_node_id";
$params_file['class_identifier'] = 'file';
$params_file['attributes'] = $attributes_file;
					
$obj_file = eZContentFunctions::createAndPublishObject( $params_file );


ou $fichier est le chemin ou se trouve ton fichier. Avec cette methode le fichier est contenu dans un noeud.

Voilà en espérant t avoir aider

actualités
Traduction d'un tutorial eZ
eZ publish 4.0 est sorti
EzPublish 3.9 enfin disponible !
Ez Publish 3.9 RC2 est en ligne !
Ez Publish 3.9 RC1 disponible !
références
Site ohmycom
OhmyBlog