У меня есть проблема и просто не могу решить ее: – /
Я разрабатываю компонент Joomla с бэкэнд. В backend я устанавливаю параметр, 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>
по<?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
всякая помощь будет оценена! благодаря
Это более простой способ. Первый импортный помощник компонента Joomla:
jimport('joomla.application.component.helper');
И затем извлеките любой атрибут, который вы хотите:
$dashboardID = JComponentHelper::getParams('com_dashboard')->get('dashboardID');
Приветствую.
$app = JFactory::getApplication('site'); $componentParams = $app->getParams('com_example'); $param = $componentParams->get('paramName', defaultValue);
Как и в случае с 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 . Надеюсь, это поможет!
Это похоже на ответ JT Blum, но в Joomla 3.x JRequest лишен. Это еще один способ получить параметры apllication.
$app = JFactory::getApplication(); $input = $app ->input; $componentName = $input ->get('option'); $params = JComponentHelper::getParams($componentName); print_r($params);
У меня была аналогичная проблема. Я только получил данные: защищенный результат, пока не перешел к конфигурации моего компонента и не сохранил его. Хотя в текстовых полях были отмечены значения по умолчанию, Joomla не смог их прочитать, прежде чем нажимать «Сохранить».
Функция помощника для получения объекта 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);
Начиная с версии 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'); }
У меня была та же проблема, и решение было таким:
$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>