Вопрос по php, joomla2.5, joomla, joomla-extensions – Как получить параметры компонента?

32

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

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

Здесьdefault.xml:

<code><?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>
</code>

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

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

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

любая помощь будет оценена! Спасибо

Вот сообщение, которое я дам в $ params: object (JRegistry) # 102 (1) {[& quot; data & quot;: protected] = & gt; object (stdClass) # 106 (0) {}} ... и я хочу получить доступ к объекту данных Nico

Ваш Ответ

8   ответов
-1

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

Это имя параметра в файле default.xml в папке views tmpl. вот 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>
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 документации. Надеюсь, это поможет!

Как указывает аспиризен, JRequest устарел в Joomla 3.x и был заменен на JInput. Синтаксис для этого будет что-то вроде этого:JFactory::getApplication()->input->getCmd('option','');  Поскольку я опубликовал исходный ответ, я пришел к выводу, что, вероятно, лучше использовать жестко запрограммированную строку, как в нескольких других ответах, если вы не занимаетесь большим количеством кодирования и не можете быть обеспокоены, чтобы заблокировать его вместо того, чтобы получить его из параметров запроса.
1

oomla 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);
0

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');
}
12
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
Это, вероятно, не работает в бэкэнде, потому чтоJFactory::getApplication('site') все равно вернет объект приложения администрирования, у которого нет методаgetParams.
1

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

2

но в Joomla 3.x JRequest ограничен. Это еще один способ получить параметры приложения.

    $app = JFactory::getApplication();
    $input = $app ->input;
    $componentName = $input ->get('option');
    $params = JComponentHelper::getParams($componentName);
    print_r($params);
чтобы получить параметр, который вы должны использовать$params ->get('param name');
57

Первый импорт Joomla Component Helper:

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

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

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

Привет.

Это лучший способ сделать это в J! 2.5 и & gt; (до сих пор)
Это правильный путь, так как вы увидите, что большинство свойств в Joomla защищены [var_dump ($ params) покажет вам это], и единственный способ получить к ним доступ через вызов функции.

Похожие вопросы