web-dev-qa-db-fra.com

Comment est-ce que je passe la valeur de champ pour un plugin dans le myplugin.php lui-même?

J'ai un simple plugin Joomla que j'ai écrit et ajouté un champ au manifeste .xml:

<config>
    <fields name="params">

        <fieldset name="basic">
            <field
                name="My plugin"
                type="text"
                label="My plugin"
                description="Format: example"
                default=""
            />

        </fieldset>

    </fields>
</config>

Comment la valeur renseignée par l'administrateur Joomla dans ce champ est-elle transmise à myplugin.php?

D'après ce que j'ai lu, il semble que params est un objet PHP, puis vous l'analysez d'une manière ou d'une autre. De plus, quel est le nom des données une fois qu'elles sont entrées dans le programme? Utilise-t-il l'étiquette définie dans le fichier Manifeste .xml?

1
Edward_178118

Hot Tip:

la meilleure façon de savoir comment Joomla fait les choses est de regarder une extension qui fait ce que vous voulez. par exemple. Regardez le code du plugin/utilisateur/plugin joomla.

Dans le manifeste, un champ de configuration est 'mail_to_user '

<field
    name="mail_to_user"
    type="radio"
    label="PLG_USER_JOOMLA_FIELD_MAILTOUSER_LABEL"
    description="PLG_USER_JOOMLA_FIELD_MAILTOUSER_DESC"
    class="btn-group btn-group-yesno"
    default="1"
>
    <option value="1">JYES</option>
    <option value="0">JNO</option>
</field>

Et dans le php c'est récupéré comme

class PlgUserJoomla extends JPlugin
{

// ... code here ...

    public function onUserAfterSave($user, $isnew, $success, $msg)
    {
        $mail_to_user = $this->params->get('mail_to_user', 1);

    // etc

Le premier argument de la méthode get est le nom du champ. Le deuxième argument est la valeur par défaut.

2
jamesgarrett

@Jamesgarret a répondu comment nous pouvons accéder aux paramètres du plug-in définis par l'administrateur.

Pour répondre à votre autre question:

De plus, quel est le nom des données une fois qu'elles sont entrées dans le programme? Utilise-t-il l'étiquette qui est définie dans le manifeste .xml?

Ce n'est pas l'étiquette - c'est le nom du champ que vous avez défini dans le fichier XML de votre plugin. Label est le texte qui sera affiché sous la forme laissée à votre champ.

Il est également préférable d'utiliser une convention de dénomination pour les noms que vous attribuez à vos champs. Je n'ai jamais vu personne utiliser des mots séparés par des espaces. Cela fonctionnera quand même, mais ça n'a pas l'air bien. En règle générale, il est préférable d’utiliser des traits de soulignement ou une convention camelCase pour séparer les mots en fonction du nom du champ.

Enfin, lorsque vous écrivez un plugin, vous devriez généralement le faire en étendant la classe JPlugin.

class plgSystemMyPlugin extends JPlugin
{}

JPlugin Class gère toutes les propriétés de base des plugins, ce qui vous permettra d'y accéder avec les méthodes de votre plugin:

$this->params; //The parameters of the plugin as set in the admin:
$this->_name; //The name of the plugin
$this->_type; //The folder of the plugin.
$this->db; //The db object.
$this->app; //The application object.
0
FFrewin