Mise à jour des commandes

Bonjour
je ne trouve pas de moyen de mettre à jour les commandes lors d’un update si un paramètre change.
ex:

$planningset = $this->getCmd(null, 'planningset');
if (!is_object($planningset)) {
     $planningset = new migoThermostatcmd();
     $planningset->setLogicalId('planningset');
     $planningset->setIsVisible(1);
     $planningset->setName(__('Réglage Planning', __FILE__));
}
$planningset->setType('action');
//$planningset->setDisplay('title_disable', 1);
//$planningset->setDisplay('message_placeholder', __('Id Planning', __FILE__));
//$planningset->setSubType('message');
$planningset->setEqLogic_id($this->getId());
$planningset->save();

si je remplace les ‹ //… › par $planningset->setSubType(‹ select ›);
ça ne prend pas effet !
merci

Un update de ton plugin ? ou une postSave ?

Je ne vois pas d’ou pourrai venir ton souci car tu a bien un save a la fin. si c’est visuel il faut faire un F5 sur ta page pour qu’il change de subType :wink:

Bonjour alexandre
oui c’est en cas de mise à jour du plugin.
Donc l’eqlogic est déjà là et la commande est existante aussi mais je veux en modifier les paramètres.

Mais tu mets un $this dans ton install.php ?

ou tu lance un save ?

ou tu le met dans le postUpdate dans ta class ?

**install.php : **

function migoThermostat_update() {
	foreach (eqLogic::byType('migoThermostat') as $migoThermostat) {
        $migoThermostat->save();
    }
}

« Save » depuis le tableau des commandes ne change rien
Je n’ai pas de postUpdate dans la class migoThermostat

A l’update du plugin

function migoThermostat_update() {
	foreach (eqLogic::byType('migoThermostat') as $migoThermostat) {
		$planningset = $migoThermostat->getCmd(null, 'planningset');
		if (is_object($planningset)) {
			$planningset->setType('action');
			$planningset->setSubType('select');
			$planningset->save();		
		}
    }
}

Sinon dans le postsave de ta classe migoThermostat et pas migoThermostatCmd

Merci ZygOm4t1k

$planningset->setSubType('select');
$planningset->save();	

le code effectivement fonctionne, testé depuis un script php.
mais pourquoi lors d’un postSave() les commandes ne se mettent pas à jour ?
la fonction postSave() s’exécute pourtant !

Bonjour,
Parce que le postSave est exécuté après le save. Il faut utiliser le preSave.

Je pense avoir résolu le problème
plutôt que de placer les commandes dans postSave()

public function postSave() {
   $eqLogic = eqLogic::byLogicalId($this->getLogicalId(),'migoThermostat');
   self::makeCmd($eqLogic);
}

et nouvelle fonction avec les commandes que j’appelle lors des mise à jours

Merci pour votre aide