web-dev-qa-db-fra.com

Comment forcer un champ d'administration à être rempli ou le plugin ne sera pas activé?

J'ai un plugin Joomla que j'ai écrit. L'administrateur Joomla a un champ à remplir, il ne peut pas être laissé en blanc et il n'y a pas de bonne valeur par défaut à renseigner.

Comment puis-je forcer le plug-in à ce que le plug-in ne puisse être activé que si l'administrateur Joomla remplit le champ requis? Est-ce quelque chose qui peut être accompli dans le manifeste .xml? Ou quelle autre méthode est la plus courante et la plus pratique à faire?

2
Edward_178118

Tout d'abord dans votre XML, vous pouvez définir required=true pour le champ que vous voulez forcer selon vos besoins.

<field 
    name="myfield"
    type="text"
    class="inputbox"
    description="Please type your something"
    label="My Something"
    required="true"
    size="10"
    filter="raw"
/>

Cela ne permettra pas au formulaire d'être enregistré si le champ est laissé vide. Mais le plugin peut toujours être activé.

Il est possible d'écrire du code pour désactiver le plug-in, dans le prochain cycle d'exécution de Joomla, si le champ de ce plug-in est vide, mais je pense que le faire sera excessif.

La meilleure chose à faire ici est de vérifier au début des méthodes de votre plugin si ce paramètre n'est pas vide - ou s'il contient une valeur attendue. Si ce test est réussi, laissez le plug-in exécuter le reste de sa tâche, sinon terminez les routines de fonctions de votre plug-in par un retour.

Ainsi, au début de la méthode d’événement de votre plugin qui s’exécute, parmi vos autres vérifications, vous pouvez avoir quelque chose comme:

if ($this->params->get('myfield') === '') { 
    return true;
}

Donc, si la valeur de myfield est vide, vous quitterez la fonction et il ne restera plus rien (le plugin ne fonctionnera pas plus longtemps).

1
FFrewin