it-swarm.com.de

Wie übergebe ich den Feldwert für ein Plugin in die myplugin.php selbst?

Ich habe ein einfaches Joomla-Plugin geschrieben und dem XML-Manifest ein Feld hinzugefügt:

<config>
    <fields name="params">

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

        </fieldset>

    </fields>
</config>

Wie wird der vom Joomla-Administrator in dieses Feld eingegebene Wert an die myplugin.php übergeben?

Nach dem, was ich gelesen habe, sieht es so aus, als wäre params ein PHP= Objekt, und Sie analysieren es dann irgendwie? Wie heißen die Daten, wenn sie erst einmal im Programm sind? Verwendet es das Label, das in festgelegt ist? XML-Manifest?

1
Edward_178118

Heißer Tipp:

der beste Weg, um herauszufinden, wie Joomla die Dinge macht, besteht darin, sich eine Kernerweiterung anzusehen, die das tut, was Sie wollen. z.B. schau dir den code für das plugin/user/joomla plugin an.

Im Manifest ist ein Konfigurationsfeld '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>

Und in der PHP ist es wie abgerufen

class PlgUserJoomla extends JPlugin
{

// ... code here ...

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

    // etc

Das erste Argument in der get-Methode ist der Feldname. Das zweite Argument ist der Standardwert.

2
jamesgarrett

@Jamesgarret antwortete, wie wir auf die vom Administrator festgelegten Parameter des Plugins zugreifen können.

So beantworten Sie Ihre andere Frage:

Wie heißen die Daten, sobald sie in das Programm aufgenommen wurden? Verwendet es die Beschriftung, die im XML-Manifest festgelegt ist?

Dies ist nicht die Bezeichnung, sondern der Name des Feldes, das Sie in der XML Ihres Plugins festgelegt haben. Beschriftung ist der Text, der im Formular links neben Ihrem Feld angezeigt wird.

Es ist auch besser, wenn Sie eine Namenskonvention für die Namen verwenden, die Sie Ihren Feldern geben. Ich habe noch nie jemanden gesehen, der Wörter verwendet, die durch Leerzeichen getrennt sind. Es wird zwar noch funktionieren, aber es sieht nicht so gut aus. Normalerweise ist es vorzuziehen, Unterstriche oder die camelCase-Konvention zu verwenden, um Wörter für den Namen des Feldes zu trennen.

Wenn Sie schließlich ein Plugin schreiben, sollten Sie es normalerweise tun, indem Sie die JPlugin-Klasse erweitern.

class plgSystemMyPlugin extends JPlugin
{}

JPlugin Class behandelt alle grundlegenden Eigenschaften für Plugins, mit denen Sie innerhalb der Methoden Ihres Plugins darauf zugreifen können:

$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