Merci Salviaf pour la réouverture!
Pour apporter de l’eau au moulin de la reflexion,
y’a un truc chelou dans le workflow de sauvegarde de l’equipement .
Pour rappel je cherche à modifier le nom d’une commande sur un logicalId spécifique d’un équipement par :
$motifType = $this->getCmd(null, 'motif_ANIMAUX');
log::add("CovidAttest", 'debug', __FUNCTION__.' - test nom motif : '.$motifType->getName());
if (is_object($motifType)) {
$motifType->setName(__('motif ANIMAUX2', __FILE__));
log::add('CovidAttest', 'debug', '------ rename motif ANIMAUX from'.$this->getHumanName().' to '.$motifType->getName());
$motifType->save(true);
}else{
log::add('CovidAttest', 'debug', '------ motif ANIMAUX not found in '.$this->getHumanName());
}
j’ai essayé de mettre dans pré/post save/update de l’équipement.
pour l’exemple, j’ai loggé le nom dans chacune de ces fonctions par :
$motif = $this->getCmd(null, 'motif_ANIMAUX');
log::add("CovidAttest", 'debug', __FUNCTION__.' - test nom motif : '.$motif->getName());
j’ai override la fonction save de la commande qui etend CMD :
public function save($_direct = false) {
parent::save($_direct);
if($this->getLogicalId()=='motif_ANIMAUX'){
log::add("CovidAttest", 'debug', __FUNCTION__.' COMMANDE - test nom motif : '.$this->getName());
}
a noter que je n’ai rien mis dans ces méthode autre que les logs et le setName.
je me retrouve avec le log :
[2021-03-24 14:12:21][DEBUG] : preSave - test nom motif : motif ANIMAUX
[2021-03-24 14:12:21][DEBUG] : ------ rename motif ANIMAUX from[test][Attest_test] to motif ANIMAUX2
[2021-03-24 14:12:21][DEBUG] : save COMMANDE - test nom motif : motif ANIMAUX2
[2021-03-24 14:12:21][DEBUG] : preUpdate - test nom motif : motif ANIMAUX2
[2021-03-24 14:12:21][DEBUG] : postUpdate - test nom motif : motif ANIMAUX2
[2021-03-24 14:12:21][DEBUG] : postSave - test nom motif : motif ANIMAUX2
[2021-03-24 14:12:21][DEBUG] : save COMMANDE - test nom motif : motif ANIMAUX
Donc l’enchaienement est :
- presave equipement : motif nom initial
- presave equip : modif du nom
- fct save de la commande => sur nouveau nom
- preupdate equip. : nouveaux nom ok
- postupdate : nouveaux nom ok
- postsave : nouveaux nom ok
- => une nouvelle sauvegarde de la commande (et non de l’équipement) avec l’ancien nom est lancé APRES le postSave de l’équipement !!! d’ou est ce que ça sort???
Mon hypothèse est que je suis sur la page de l’équipement avec le champs du formulaire renseigné avec la valeur courante, et que la soumission du formulaire intervient je ne sais comment au reload de la page?? [edit] si je met encore un troisième nom dans le champs de la commande, je me retrouve en étape « 7 » avec ce nouveau nom [/edit]
=> comment outrepasser la soumission du formulaire qui intervient même après le postsave…?
au pifomètre, je dirais que ça téléscope le pb de @hugoKs3 dans Update command dans postSave equipement