33

私はここに問題があり、それを解決することはできません:-/

バックエンドで 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

すべての助けをいただければ幸いです!ありがとう

4

8 に答える 8

65

もっと簡単な方法があります。最初に Joomla コンポーネント ヘルパーをインポートします。

jimport('joomla.application.component.helper'); // not required in Joomla 3.x

次に、次のように必要な属性を取得します。

$params = JComponentHelper::getParams('com_dashboard');
$dashboardID = $params->get('dashboardID');

ご挨拶。

于 2012-08-21T16:20:46.687 に答える
12
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
于 2012-10-19T02:48:53.907 に答える
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 バージョンを読んでみてください。それが役立つことを願っています!

于 2012-11-20T15:19:42.857 に答える
2

JT Blum answer と似ていますが、Joomla 3.x では JRequest は非推奨です。アプリケーションのパラメーターを取得する別の方法です。

    $app = JFactory::getApplication();
    $input = $app ->input;
    $componentName = $input ->get('option');
    $params = JComponentHelper::getParams($componentName);
    print_r($params);
于 2014-05-05T19:33:09.907 に答える
2

バージョン 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');
}
于 2017-10-12T19:53:39.050 に答える
1

同様の問題がありました。コンポーネントの構成に移動して保存するまで、 data:protectedの結果しか得られませんでした。テキストフィールドに出力されたデフォルト値がありましたが、Joomla は「保存」をクリックする前にそれらを読み取ることができませんでした。

于 2014-04-25T10:13:17.490 に答える
1

すべての 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);
于 2015-04-08T12:20:33.720 に答える
-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>
于 2012-09-28T06:46:09.090 に答える