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
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.
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
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!
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);
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'.
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);
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');
}
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