Bonjour
j’ai une question basique probablement mais que je ne trouve pas dans le forum
j’ai un paramètre global de plugin ( dans configuration.php) que j’aimerais être une valeur en secondes. donc un nombre entier.
Comment faire pour m’assurer que c’est bien un nombre. coté client le type=« number » semble ignoré, et coté server PHP, est il possible de valider la valeur avant de la stocker dans la configuration du plugin ?
Tu dois créer une méthode nommée preConfig_[clé_de_la_config] dans ta class eqLogic
Si le nom de ton paramètre contient ::, : ou - tu dois remplacer par _
Donc dans ton cas ceci devrait fonctionner::
public static function preConfig_refresh_freq($value) {
}
Dans cette méthode tu peux nettoyer la valeur, faire ce que tu veux et renvoyer (return) la valeur à sauver ou jeter une exception, cela devrait fonctionner, le message de l’exception sera affiché sur l’écran de config normalement.
A noter qu’il existe l’équivalent pour des actions après la sauvegarde: postConfig_[clé_de_la_config]
Pour plus de détails, voir méthode public static function save($_key, $_value, $_plugin = 'core') {} de la classe config
edit: et il existe aussi le même principe en JS: tu peux avoir une méthode js qui sera appelée après sauvegarde de la config (si besoin faut que je retrouve comment ca marchait)
edit2: je devrais vraiment documenter tous ces petits « usages avancées » du core
Voila, ca n’a pas été très long à retrouver;
il suffit d’avoir une méthode js déclarée et chargée portant le nom
function [pluginId]_postSaveConfiguration() {
}
Donc à mettre soit dans le configuration.php dans un balise script soit faire un include d’un fichier js et y mettre les fonctions nécessaire (plus propre je trouve).
Ca permet donc de faire certaines actions au postSave coté php (par exemple connecter un démon, valider des credentials etc) et ensuite coté js être prévenu que la config a été faite et on peut rappeler en ajax une méthode de notre plugin pour par exemple lancer une synchro d’équipement ou autre ou simplement afficher le statut de la connexion.
D’accord c’est bien utile pour les actions post-save.
mais je cherche encore a valider que le INPUT ne contient que des nombres avant le save et éventuellement empêcher le save. une idée pourrait être que si la fonction preConfig_xxx() retourne null alors on interrompt le save ? qu’en pensez vous ?
Sinon J’aboutis a ceci https://github.com/amg0/plugin-veralink dans plugin_info/configuration.php et configuration.js. mais c’est imparfait car ca n’empêche pas la sauvegarde si l’utilisateur clique le bouton « sauver » quand meme.