我在这里遇到问题而无法解决问题: - /
我正在开发一个带后端的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
每一个帮助都将不胜感激! 感谢
答案 0 :(得分:59)
有一种更简单的方法。 首先导入Joomla Component Helper:
jimport('joomla.application.component.helper'); // not required in Joomla 3.x
然后检索您想要的任何属性:
$params = JComponentHelper::getParams('com_dashboard');
$dashboardID = $params->get('dashboardID');
问候。
答案 1 :(得分:12)
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
答案 2 :(得分: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 version。我希望有所帮助!
答案 3 :(得分:2)
与J.T.相似。 Blum回答,但在Joomla 3.x中,JRequest被删除了。这是获得应用程序参数的另一种方法。
$app = JFactory::getApplication();
$input = $app ->input;
$componentName = $input ->get('option');
$params = JComponentHelper::getParams($componentName);
print_r($params);
答案 4 :(得分:1)
我有类似的问题。我只获得数据:受保护的结果,直到我进入组件的配置并保存它。虽然在文本字段中打印了默认值,但在点击“保存”之前,Joomla无法阅读它们。
答案 5 :(得分:1)
Helper函数在所有Joomla版本1.5 / 2.5 / 3.x中获取Params对象
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);
答案 6 :(得分:0)
从版本3.1开始,Joomla正在弃用所有J
类,问题效果,版本4.0将弃用几乎所有J
类,从现在开始推荐的方法来检索组件参数是调用整个命名空间函数:
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');
}
答案 7 :(得分:-1)
我遇到了同样的问题,解决方法是:
$input = JFactory::getApplication()->input;
$parametername = $input->getInt('parametername');
echo $parametername;
这是views tmpl文件夹中default.xml中的参数名称。 这是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>