|
|
 |
modification d'un attribut d'une classe en PHP [au secours :'( ] |
 |
Vous devez être connecté pour utiliser le forum. Vous pouvez le faire ici.
|
Auteur
|
Message
|
|
anne martinet
|
Mercredi 27 Août 2008 9:02:16 am
modification d'un attribut d'une classe en PHP [au secours :'( ]
Bonjour,
Dans une de mes extensions je cree une classe nommée "Video_Flash_MM". Cette classe est composée de plusieurs attributs dont un ezstring nommé "etat".
Ainsi je crée cette classe (que si nécessaire), les attributs, ... et je peux instancier cette classe sans problème.
Seulement, la valeur de mon attribut "etat", dépend d'une information qu'un web service me donnera. (Cette valeur changera au cours du temps). Je cherche SANS SUCCES a modifié mon attribut ainsi:
// --- on recupere toutes les instances de la classe Video_Flash_MM
$video_flash_mm=eZContentObjectTreeNode::subTreeByNodeID(
array( 'ClassFilterType' => 'include',
'ClassFilterArray' => array('video_flash_mm'),
'Depth' => 1,
'DepthOperator' => 'eq'),
365
);
// --- si l'attribut etat a pour valeur "termine" je souhaite pour l'instant la modifier en "termine_3"
foreach ( $video_flash_mm as $v )
{
$dm=$v->dataMap();
//si etat="termine" alors je fais ceci:
$dm['etat_ezstring']->setContent('termine_3');
$dm['etat_ezstring']->store();
$v->setContentObject($dm);
$v->store();
$v->updateAndStoreModified();
............
}
Pour moi, je modifie la valeur de l'attribut et je stocke cette valeur dans mon attribut, je remet à jour mon instance ($v) avec ce nouvel attribut, et je stocke le tout. Donc lorsque je vérifie dans mon interface admin je devrais avoir mon attribut qui change de valeur de "termine" en "termine_3". Et ce n'est pas le cas!
Mon objet reste avec son attribut à "termine".........
Qu'est ce que je n'ai pas compris...............
merci à l'avance...
Anne.
|
|
anne martinet
|
Jeudi 18 Septembre 2008 1:48:23 pm
[Resolu] modification d'un attribut d'une classe en PHP [au secours :'( ]
Ca y est j'ai reussi 
c'était presque ce que j'avais proposé plus haut...
//1- je recupere touts les object de classe 'video_flash_mm' qui se trouve dans le dossier '$id_folder_videos'
$video_flash_mm=eZContentObjectTreeNode::subTreeByNodeID(
array( 'ClassFilterType' => 'include',
'ClassFilterArray' => array('video_flash_mm'),
'Depth' => 1,
'DepthOperator' => 'eq'),
$id_folder_videos
);
//2- pour chaqu'un de ces objets, je recupere l'attribut qui m'interesse 'etat_ezstring'
foreach ( $video_flash_mm as $v )
{
...
$object = $v->attribute('object');
$objectData = $object->dataMap();
// $attribute will be set to an object of the class eZContentObjectAttribute
$attribute = $objectData['etat_ezstring'];
//3- je recupere le contenu de cet attribut
$int_mm=$objectData['id_mm_ezinteger']->content();
//4- je met une nouvelle chaine dans mon attribut et je range dans la BD.
$attribute->setAttribute( 'data_text', 'Hello World !' );
$attribute->store();
...
}
et ca fonctionne
|
|
|
 |
|