it-swarm-pt.tech

Como obter os parâmetros dos componentes?

Eu tenho um problema aqui e apenas não consigo resolvê-lo: - /

Estou desenvolvendo um componente Joomla com backend. No backend eu configurei um parâmetro, o dashboardId, mas não consigo acessá-los na view. Eu sempre recebo data:protected (quando eu despejo params). Parece que não tenho permissão para acessar o objeto.

Aqui está o 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>

Agora, no view.html.php eu tento acessar o parâmetro assim:

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

Quando faço var_dump($dashboardId); obtenho NULL mas quando despejo $app, consigo ver a dashboardID 

toda ajuda seria apreciada! Obrigado

32
Nico

Existe uma maneira mais simples. Primeiro importador do componente Joomla:

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

E então recupere qualquer atributo que você quiser assim:

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

Saudações.

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

Semelhante à resposta fornecida pelo LoboX, recomendo usar o auxiliar do componente para obter os parâmetros do componente:

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

A JRequest::getVar('option') retorna o nome do seu componente com o prefixo com_. Além disso, parece que você está tentando misturar um pouco da sintaxe 1.5/1.6 em seu arquivo de configuração. Se você ainda não viu, tente ler a versão 2.5 da documentação. Espero que ajude!

3
J.T. Blum

É simular a J.T. Blum responder, mas no Joomla 3.x JRequest é depreciada. É outra maneira de obter os parâmetros do aplicativo.

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

Eu tive um problema parecido. Eu só tenho o data: protected result até que fui para a configuração do meu componente e salvei. Embora houvesse valores padrão impressos nos campos de texto, o Joomla não pôde lê-los antes de clicar em 'salvar'.

1
Sebastian Barth

Função auxiliar para obter o objeto Params em todas as versões 1.5/2.5/3.x do Joomla

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.

Desde que a versão 3.1 do Joomla está em processo para desaprovar todas as classes J, o efeito da matéria, versão 4.0, desaprovará quase todas as classes J, a maneira recomendada de agora em diante para recuperar os componentes param é chamar toda a função namespace:

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

ou, se você estiver trabalhando em um modelo, poderá chamar a palavra-chave use para importar o arquivo e usar a classe no documento, como

use Joomla\CMS\Component\ComponentHelper;

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