web-dev-qa-db-fra.com

Comment obtenir les paramètres du composant?

J'ai un problème ici et je ne peux pas le résoudre: - /

Je développe un composant Joomla avec backend . Dans le backend, j'ai défini un paramètre, le dashboardId, mais je ne peux pas y accéder dans la vue. Je reçois toujours data:protected (quand je vide params). Il semble que je ne suis pas autorisé à accéder à l'objet.

Voici le 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>

Maintenant, dans le view.html.php j'essaie d'accéder au paramètre comme ceci:

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

Quand je fais var_dump($dashboardId); je reçois NULL mais quand je vide $app, je peux voir le dashboardID 

chaque aide serait appréciée! Merci

32
Nico

Il existe un moyen plus simple… ... D'abord, importez Joomla Component Helper:

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

Et puis récupérez n'importe quel attribut que vous voulez comme ceci:

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

Salutations.

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

Semblable à la réponse fournie par LoboX, je vous recommanderais d'utiliser l'assistant de composant pour obtenir les paramètres de composant:

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') renvoie le nom de votre composant avec le préfixe com_. En plus de cela, il semblerait que vous essayiez de mélanger un peu de syntaxe 1.5/1.6 dans votre fichier de configuration. Si vous ne l'avez pas encore vu, essayez de lire la version 2.5 de la documentation. J'espère que ça aide!

3
J.T. Blum

C'est semblable à J.T. Blum répond, mais dans Joomla 3.x, JRequest est obsolète. C'est un autre moyen d'obtenir les paramètres de l'application.

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

J'avais un problème similaire. Je n'ai eu que les data: protected result jusqu'à ce que je sois allé à la configuration de mon composant et que je l'ai enregistré. Bien que des valeurs par défaut aient été imprimées dans les champs de texte, Joomla n'a pas été en mesure de les lire avant de cliquer sur "enregistrer".

1
Sebastian Barth

Fonction d'assistance pour obtenir un objet Params dans toutes les versions de Joomla 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.

Depuis la version 3.1, Joomla est en train de déprécier toutes les classes J, effet important, la version 4.0 dépréciera presque toutes les classes J, le moyen recommandé à partir de maintenant de récupérer les paramètres param est d'appeler la fonction entière de l'espace de noms:

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

ou, si vous travaillez sur un modèle, vous pouvez appeler le mot clé use pour importer le fichier et utiliser la classe dans le document, comme

use Joomla\CMS\Component\ComponentHelper;

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