$eqLogic->getId()

Bonjour,

Donc mon fichier ProJote.php, je veux afficher les valeurs contenu dans un fichier crée avec l’ID de l’équipement :

<?php
// Construire le chemin vers le fichier en fonction de l'ID de l'équipement
$file_path = FILE_PATH . $eqLogic->getId() . '/enfant.ProJote';
$profile_picture_path = dirname($file_path) . '/profile_picture.jpg';

log::add('ProJote', 'debug', 'ProJote.php:: emplacement du Fichier ' . $file_path);
log::add('ProJote', 'debug', 'ProJote.php:: chemin vers profile_picture.jpg ' . $profile_picture_path);

// Vérifier si le fichier existe
if (file_exists($file_path)) {
// Lire le contenu du fichier
$content = file_get_contents($file_path);
// Décoder le contenu JSON en tableau associatif
$data = json_decode($content, true);

// Vérifier si le contenu JSON est valide
if ($data !== null) {
	$token = isset($data['Token']) ? $data['Token'] : null;

	if ($token !== null) {
		$token_url = isset($token['Token_URL']) ? htmlspecialchars($token['Token_URL']) : 'Non défini';
		$token_username = isset($token['Token_username']) ? htmlspecialchars($token['Token_username']) : 'Non défini';
		$token_password = isset($token['Token_Password']) ? htmlspecialchars($token['Token_Password']) : 'Non défini';

		// Afficher les données dans les champs
		echo '<div class="form-group">';
		echo '<label class="col-sm-2 control-label">{{Username}} :</label>';
		echo '<div class="col-sm-10">';
		echo '<span style="position:relative;top:+5px;left:+5px;" class=" form-control small-font">' . $token_username . '</span>';
		echo '</div>';
		echo '</div>';

		echo '<div class="form-group">';
		echo '<label class="col-sm-2 control-label">{{Token_Pass}} :</label>';
		echo '<div class="col-sm-10 scrollable-container">';
		echo '<span style="position:relative;top:+5px;left:+5px;display:inline-block;" class=" form-control small-font scrollable-container">' . $token_password . '</span>';
		echo '</div>';
		echo '</div>';

		echo '<div class="form-group">';
		echo '<label class="col-sm-2 control-label">{{Token_URL}} :</label>';
		echo '<div style="scrollbar-width: none;" class="col-sm-10 scrollable-container">';
		echo '<a href="' . $token_url . '" target="_blank" class=" form-control url-link small-font scrollable-container">' . $token_url . '</a>';
		echo '</div>';
		echo '</div>';
	} else {
		echo '<p>Erreur : Les informations de Token sont absentes.</p>';
	}
} else {
	echo '<p>Erreur : Le fichier JSON est invalide.</p>';
}
} else {
echo '<p>Erreur : Le fichier n\'existe pas à l\'emplacement spécifié.</p>';
}

// Vérifier si le fichier profile_picture.jpg existe
if (file_exists($profile_picture_path)) {
} else {
echo '<p>Le fichier profile_picture.jpg n\'existe pas.</p>';
}
							?>

Hors quand je le requête depuis l’'URL :
http://192.168.X.2:9080/index.php?v=d&m=ProJote&p=ProJote&id=4#eqlogictab

J’ai le résultat dans suivant cf log :

ProJote.php:: emplacement du Fichier /var/www/html/plugins/ProJote/data/2/enfant.ProJote

Le 2 devrait être remplacer par le 4 de l’ID normalement ?

Bonjour,

Oulala c’est pas du tout comme ça que ça fonctionne :slight_smile: vous raisonnez comme pour du vieux php scolaire.

Il faut penser avec le JavaScript et les appels Ajax et surtout les templates !

Regardez comment font les autres plugins… un peu long de vous expliquer tout ça mais le principe général c’est que l’html contient des champs data-l1key et de classe eqLogicAttr qui reçoivent les valeurs qui sont en db grâce à un appel Ajax que vous ne devez pas gérer.

Exemple ce champ : <input type="text" class="eqLogicAttr form-control" data-l1key="id" style="display:none;"> va recevoir l’id de l’eqLogic…

Ensuite en JavaScript onChange de ce champ (par exemple), ou sur un événement bouton, vous pouvez faire un appel Ajax ou du simple JavaScript pour modifier le champ src et afficher une image.

Bonjour,

Merci pour cette réponse, je vais voir comment faire. Mais de mémoire, il me semblait que j’avais un problème en javascript pour accéder au fichier local et l’afficher, c’est pour cela que je suis passé par un requête PHP.
Ma difficulté dans le développement est que j’utilise Jeedom pour découvrir mais je ne peux pas parcourir tous les plugins de jeedom pour trouver celui qui ferais ce que je recherche.

Il existe un outil de recherche, des exemples ou encore un bibliothèque ?

Encore une fois tu ne raisonnes pas dans le bon sens…Tu n’as pas l’air développeur je me trompe ?

Recherche oui sur le github de jeedom tu trouveras plusieurs plugins dont le plugin-template qui est fait pour donner l’exemple.

Un exemple de on change sur mon plugin adguard :

Tu peux voir que je cache des champs par exemple.

Pour ton image elle existe déjà quelque part donc tu dois juste construire l’URL en JavaScript et la placer dans le champ src d’une img. Il faut juste veiller à la mettre dans un endroit autorisé par Apache (voir la réglée de sécurité la : core/.htaccess at 69d3727cec614132b97905f06a8466631df0f722 · jeedom/core · GitHub )

Tu as entièrement raison je ne suis pas développeur et il me manque pas mal de réflexe ou de connaissance.
Je sais que la communauté va m’aider à les obtenir, merci !

C’est pas vraiment comme ça que ça fonctionne :wink:


C’est un boulot, c’est toi qui doit apprendre par toi même et lire beaucoup …

3 « J'aime »

OK je vais continuer à chercher, l’erereur 403 en javascript semble être dut à l’url de l’image.
Je pense qu’il doit y avoir un différence en l’url en PHP et l’URL en JS …

Je vais chercher.

J’ai trouvé c’est bien cela :
L’arborescence qui marche en PHP est :« /var/www/html/plugins/ProJote/data/ »
et en JS plugins/ProJote/data