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
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.
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
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!
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);
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".
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);
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');
}