问题
I have a problem here and just cant solve it :-/
I am developing an Joomla component with backend.
In the backend I set a parameter, the dashboardId
, but I can't access them in the view. I always get data:protected
(when I dump params
). It seems like I'm not allowed to access the object.
Here is the 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>
Now, in the view.html.php
I try to access the parameter like this:
$app = &JFactory::getApplication();
$params = JComponentHelper::getParams('com_dashboard');
$dashboardId = $params->get('dashboardId');
var_dump($dashboardId);
When I do var_dump($dashboardId);
I get NULL
but when I dump $app
, I can see the dashboardID
every help would be appreciated! Thanks
回答1:
There's a more simple way. First import Joomla Component Helper:
jimport('joomla.application.component.helper'); // not required in Joomla 3.x
And then retrieve any attribute you want like this:
$params = JComponentHelper::getParams('com_dashboard');
$dashboardID = $params->get('dashboardID');
Greetings.
回答2:
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
回答3:
Similar to the answer provided by LoboX, I'd recommend using the component helper to get component parameters:
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
The JRequest::getVar('option')
returns your component's name with the com_ prefix. Aside from that, it looks like you're trying to mix a little bit of 1.5/1.6 syntax into your configuration file. If you haven't seen it yet, try reading through the 2.5 version of the documentation. I hope that helps!
回答4:
It is simular to J.T. Blum answer, but in Joomla 3.x JRequest is depricated. It is another way to get the apllication's params.
$app = JFactory::getApplication();
$input = $app ->input;
$componentName = $input ->get('option');
$params = JComponentHelper::getParams($componentName);
print_r($params);
回答5:
I had a similar problem. I only got the data:protected result until I went to the configuration of my component and saved it. Though there were default values printed in the textfields Joomla wasn't able to read them before clicking on 'save'.
回答6:
Helper Function to get Params Object in all Joomla Versions 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:
Since version 3.1 Joomla is in process to deprecate all J
classes, matter effect, version 4.0 will deprecate almost all J
classes, the recommended way from now on to retrieve components param is either calling the entire namespace function:
Joomla\CMS\Component\ComponentHelper::getParams('com_dashboard')->get('dashboardID');
or, if you are working on a model, you can call use
keyword in order to import the file and use the class down in the document, like
use Joomla\CMS\Component\ComponentHelper;
function myFunction() {
$param = ComponentHelper::getParams('com_dashboard');
$dashboardID = $param->get('dashboardID');
}
回答8:
I had the same problem and the solution was this:
$input = JFactory::getApplication()->input;
$parametername = $input->getInt('parametername');
echo $parametername;
This is the name of a parameter in the default.xml in the views tmpl folder. here is the 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>
来源:https://stackoverflow.com/questions/10431995/how-to-get-component-parameters