Как получить параметры компонента?
У меня есть проблема и просто не могу ее решить: -/
Я разрабатываю компонент 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
всякая помощь будет оценена!
Благодаря
Ответы
Ответ 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>