Appeler la commande refresh d'un équipement depuis AJAX

Bonjour,

Je viens vers vous car je bute sur quelque chose dont je n’arrive pas à me sortir.

La situation actuelle est la suivante :

  • Je clic sur + pour ajouter un équipement
  • J’ai la fenêtre pour saisir le nom
  • J’arrive sur ma page équipement ou je peux choisir l’objet parent, choisir si visible ou non etc.
    Si je ne coche pas la case activer, lorsque je clic sur sauvegarde, je me fais jeter car c’est à ce moment là que la moulinette se met en place et donc j’obtiens l’erreur suivante :

J’ai voulu rajouter un bouton sur la page équipement, bouton situé à gauche de chaque ESXI afin de contourner le problème (oui il y a un problème graphique pour ce bouton, il n’est pas aligné) :

J’ai fais la partie JS pour catcher l’événement, j’ai appeler coté Ajax la fonction refresh :

if (init('action') == 'synchronisation') {
	log::add('vmware', 'debug', 'DEBUG IF de la partie Synchronisation du fichier ajax');
	$eqLogic = vmware::byId(init('id'));
	$eqLogic->save();
	//$eqLogic->refreshViaBouttonSynchroniser(init('id'));
	ajax::success();
}

La ligne commentée c’est parce que l’idée première était d’appeler la commande refresh dans une fonction de ma class, mais je n’ai pas réussi à appeler depuis la fonction refreshViaBouttonSynchroniser la commande refresh. J’ai tenté tout ce que j’ai pu sans succès.
J’ai également dans le code du fichier Ajax essayé d’appeler la fonction refresh que j’ai vu dans la doc du core Jeedom sans succès :
$eqLogic->refresh(); (mais je peux comprendre que ça n’est pas équivalent à ma commande refresh de l’équipement ESXI Server).

Donc deux questions :
Est-ce que je peux réussir à appeler la commande refresh de mon équipement directement dans l’ajax ?
Ou bien comment faire ça coté class, car j’ai testé pleins de choses sans succès.

Merci d’avance,

Oui, si dans la class tu dois juste avoir une méthode static qui sera appelé dans l’ajax (pas grand intérêt).
Dans les 2 cas, tu dois retrouver ton eqlogic, ce que tu fais avec $eqLogic = vmware::byId(init('id'));
Ensuite tu dois retrouver ta commande $cmd = $eqLogic ->getCmd(null, 'refresh'); (si l’id de ta commande est « refresh ».
Tu peux ensuite exécuter la commande $cmd->execCmd();

Sinon, si ta commande « refresh » ne fait qu’appeler une fonction de ton eqLogic, tu peux évidement appeler cette fonction directement.

J’ai contourné, j’appelle une fonction de ma classe depuis l’Ajax.
En l’état c’est fonctionnel