it-swarm.com.de

Wie erhalte ich Komponentenparameter?

Ich habe hier ein Problem und kann es einfach nicht lösen: - /

Ich entwickle eine Joomla-Komponente mit Backend . Im Backend setze ich einen Parameter, die dashboardId, aber ich kann nicht in der Ansicht darauf zugreifen. Ich bekomme immer data:protected (wenn ich params ablade). Es scheint, dass ich nicht auf das Objekt zugreifen darf.

Hier ist der default.xml:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="Dashboard">
        <message>
            <![CDATA[dashboard LAYOUT DESCRIPTION]]>
        </message>
    </layout>
    <fields name="params">
        <fieldset name="params">
            <field
                name="dashboardId" 
                type="text" 
                label="Dashboard ID"
                description="com_dashboard_desc"
                default="1"
            >   
            </field>
        </fieldset>
    </fields>
</metadata>

Nun versuche ich im view.html.php, auf den Parameter folgendermaßen zuzugreifen:

$app = &JFactory::getApplication();
$params = JComponentHelper::getParams('com_dashboard');
$dashboardId = $params->get('dashboardId');
var_dump($dashboardId);

Wenn ich var_dump($dashboardId); mache, erhalte ich NULL, aber wenn ich $app ablade, sehe ich die dashboardID 

jede Hilfe wäre dankbar! Danke

32
Nico

Es gibt einen einfacheren Weg ... _. Importieren Sie zunächst den Joomla Component Helper:

jimport('joomla.application.component.helper'); // not required in Joomla 3.x

Rufen Sie dann jedes gewünschte Attribut ab:

$params = JComponentHelper::getParams('com_dashboard');
$dashboardID = $params->get('dashboardID');

Schöne Grüße.

57
Lobo-X
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
12
Bernardo Siu

Ähnlich wie in der Antwort von LoboX würde ich empfehlen, den Komponentenhelfer zu verwenden, um Komponentenparameter zu erhalten:

jimport('joomla.application.component.helper'); // Import component helper library
$params = JComponentHelper::getParams(JRequest::getVar('option')); // Get parameter helper (corrected 'JRquest' spelling)
$params->get('parameter_name'); // Get an individual parameter

JRequest::getVar('option') gibt den Namen Ihrer Komponente mit dem Präfix com_ zurück. Abgesehen davon scheint es so, als würden Sie versuchen, ein bisschen 1,5/1.6-Syntax in Ihre Konfigurationsdatei zu mischen. Wenn Sie es noch nicht gesehen haben, lesen Sie die 2.5-Version der Dokumentation. Ich hoffe das hilft!

3
J.T. Blum

Es ist ähnlich zu J.T. Antwort von Blum, aber in Joomla 3.x ist JRequest veraltet. Es ist eine andere Möglichkeit, die Parameter der Anwendung zu erhalten.

    $app = JFactory::getApplication();
    $input = $app ->input;
    $componentName = $input ->get('option');
    $params = JComponentHelper::getParams($componentName);
    print_r($params);
2
aspirisen

Ich hatte ein ähnliches Problem. Ich habe nur das data: protected result erhalten, bis ich zur Konfiguration meiner Komponente gegangen bin und sie gespeichert habe. Obwohl Standardwerte in den Textfeldern gedruckt wurden, konnte Joomla sie nicht lesen, bevor Sie auf "Speichern" klicken.

1
Sebastian Barth

Hilfsfunktion zum Abrufen des Params-Objekts in allen Joomla-Versionen 1.5/2.5 /3.x

class myCompoHelper{

    public static function getParams($option)
    {

        if (version_compare(JVERSION, '1.5', 'g'))
        {
            $application = JFactory::getApplication();
            if ($application->isSite())
            {
                $params = $application->getParams($option);
            }
            else
            {
                jimport('joomla.application.component.helper');
                $params = JComponentHelper::getParams($option);
            }
        }
        else
        {
            jimport('joomla.application.component.helper');
            $params = JComponentHelper::getParams($option);
        }
        return $params;
    }

}

$params=myCompoHelper::getParams('com_mycomponent');
echo $params->get('myParamName',null);
1
Stergios Zg.

Seit Version 3.1 ist Joomla im Begriff, alle J-Klassen abzulehnen, egal zu welchem ​​Zeitpunkt. Version 4.0 wird fast alle J-Klassen nicht mehr unterstützen. Die empfohlene Methode zum Abrufen von components param ist das Aufrufen der gesamten Namespace-Funktion:

Joomla\CMS\Component\ComponentHelper::getParams('com_dashboard')->get('dashboardID');

wenn Sie an einem Modell arbeiten, können Sie das Schlüsselwort use aufrufen, um die Datei zu importieren und die Klasse im Dokument zu verwenden, z

use Joomla\CMS\Component\ComponentHelper;

function myFunction() {
    $param = ComponentHelper::getParams('com_dashboard');
    $dashboardID = $param->get('dashboardID');
}
0