Подтвердить что ты не робот

Как получить параметры компонента?

У меня есть проблема и просто не могу ее решить: -/

Я разрабатываю компонент Joomla с бэкэнд. В бэкэнд я устанавливаю параметр dashboardId, но я не могу получить к ним доступ в представлении. Я всегда получаю data:protected (при сбросе params). Похоже, мне не разрешен доступ к объекту.

Вот 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>

Теперь, в view.html.php, я пытаюсь получить доступ к параметру, подобному этому:

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

Когда я делаю var_dump($dashboardId);, я получаю NULL, но когда я дамп $app, я могу видеть dashboardId

всякая помощь будет оценена! Благодаря

4b9b3361

Ответ 1

Там более простой способ. Первый импортный помощник компонента Joomla:

jimport('joomla.application.component.helper');

И затем извлеките любой атрибут, который вы хотите:

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

Привет.

Ответ 2

$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);

Ответ 3

Как и в случае с LoboX, я рекомендую использовать компонентный помощник для получения параметров компонента:

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') возвращает имя вашего компонента с префиксом com_. Кроме того, похоже, что вы пытаетесь смешивать немного синтаксиса 1.5/1.6 в файле конфигурации. Если вы еще этого не видели, попробуйте прочитать 2.5 версию документации. Надеюсь, это поможет!

Ответ 4

Это аналогично J.T. Blum ответ, но в Joomla 3.x JRequest лишен. Это еще один способ получить параметры apllication.

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

Ответ 5

У меня была аналогичная проблема. Я получил результат data: protected, пока не перешел к конфигурации моего компонента и не сохранил его. Хотя в текстовых полях были отмечены значения по умолчанию, Joomla не смог их прочитать, прежде чем нажимать "Сохранить".

Ответ 6

Функция помощника для получения объекта Params во всех версиях 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);

Ответ 7

Начиная с версии 3.1 Joomla в процессе обесценивания всех классов J, эффект материи, версия 4.0 будет обесценивать почти все классы J, рекомендуемый путь с этого момента, чтобы извлечь компонент param, либо вызывает всю функцию пространства имен:

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

или, если вы работаете над моделью, вы можете вызвать ключевое слово use, чтобы импортировать файл и использовать класс в документе, например

use Joomla\CMS\Component\ComponentHelper;

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

Ответ 8

У меня была та же проблема, и решение было следующим:

$input = JFactory::getApplication()->input;
$parametername = $input->getInt('parametername');
echo $parametername;

Это имя параметра в файле default.xml в папке tmpl views. вот xml

<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="Offers">
         <message>This is a component in order to display offers</message>
    </layout>
    <state>
        <name>name</name>
            <description>description</description>

        <url addpath="/administrator/components/com_component/elements">
            <param name="category_id" section="com_component" type="categoriesmenu"  value_field="category_name" label="COM_COMPONENT_CATEGORY_FIELD_SELECT_TITLE" description="COM_COMPONENT_CATEGORY_FIELD_SELECT_TITLE_DESC" />
        </url>
    </state>

    <fields name="request" >
        <fieldset name="request" addfieldpath="/administrator/components/com_component/models/fields">
            <field name="parametername" type="category"
                label="category"
                required="true"
                description="Perigrafh"
            />
        </fieldset>
    </fields>


</metadata>