web-dev-qa-db-ja.com

コンポーネントパラメータを取得する方法は?

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

バックエンドで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が表示されます

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

32
Nico

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

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

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

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

ご挨拶。

60
Lobo-X
$app = JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);
12
Bernardo Siu

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バージョン を読んでみてください。それがお役に立てば幸いです!

3
J.T. Blum

J.Tに似ていますBlumは答えますが、Joomla 3.xではJRequestは廃止されました。アプリケーションのパラメータを取得する別の方法です。

    $app = JFactory::getApplication();
    $input = $app ->input;
    $componentName = $input ->get('option');
    $params = JComponentHelper::getParams($componentName);
    print_r($params);
2
aspirisen

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

1
Sebastian Barth

すべての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);
1
Stergios Zg.

バージョン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');
}
0