3

駆け出しの Joomla / PHP 開発者で、これを行う方法を理解するために壁にぶつかっています。私が検索したものはすべて、古いバージョンの Joomla やその他のフレームワークのものであったため、最初はすべて混乱していました。

コンポーネントのどこからでも呼び出せるヘルパー関数が必要です。基本的に、ユーザー ID の入力を受け取り、フルネーム (髪の色と身長など) を返します。関数は次のとおりです。

function get_profile_info($userID) {

        $db =& JFactory::getDBO();          
        $query = $db->getQuery(true);

        $query->SELECT('u.id as UserID
                    , u.name AS Name
                    , up.profile_value AS Hair
                    , up2.profile_value AS Height
                    ');
        $query->FROM (' #__users AS u');
        $query->LEFTJOIN (' #__user_profiles AS up ON u.id = up.user_id AND up.ordering = 1');
        $query->LEFTJOIN (' #__user_profiles AS up ON u.id = up.user_id AND up.ordering = 2');
        $query->WHERE(' u.id = '.$userID.'');
        $query->GROUPBY (' u.id
                    , u.name
                    , up.profile_value
                    ');


       $db->setQuery($query);   
       return $query;                   
}

これをコンポーネントの「helpers」フォルダー内の「lookups.php」というファイルに入れます...しかし、ここで次に何をすべきかわかりません。lookups.php の先頭には以下が義務付けられています。

<?php defined ( '_JEXEC' ) or die;

2 つの質問: 1) すべてをクラスに入れますか、それとも一連の関数として保持しますか (他にもあるため)。

2) ビュー (view.html.php / default.php) でユーザー ID を渡し、名前、髪、高さの値を取得するにはどうすればよいですか?

ありがとうございました!

==================================

編集: 以下の @Shaz の応答に基づいて、ここに私がいる場所があります (ここでも、開始して、これのいくつかに頭を包み込もうとしています):

lookups.php

abstract class LookupHelper {

        var $Name;
        var $Hair;
        var $Height;

    public function get_profile_info($userID) {
                ... 
                (same as above until the next line)

                $db->setQuery($query);
                $result=$db->loadRow();
                $Name = $result[1];
                $Hair = $result[2];
                $Height = $result[3];
        $getprofileinfo = array(Name=>$Name, Hair=>$Hair, Height=>$Height);
                $return $getprofileinfo;
           }
    }

次に、私のdefault.phpで(おそらくview.html.phpに移動します):

    $getprofileinfo = Jview::loadHelper('lookups'); //got an error without this
    $getprofileinfo = LookupHelper::get_profile_info($userID);

    $Name = $getprofileinfo[Name];
    $Hair = $getprofileinfo[Hair];
    $Height = $getprofileinfo[Height];

だから...それは機能しています-しかし、これを行うためのはるかに簡単な方法があるようです(具体的には、配列を手動で作成してから位置で呼び出す)。考え?

ありがとうございました!!

4

2 に答える 2

2
  1. ヘルパークラスを作成し、そこにすべての関数を含めます。

    抽象クラスHelloWorldHelper{/*関数*/}

  2. 関数を呼び出し、結果を保存します。

    $ var = HelloWorldHelper :: get_profile_info($ thatId);

于 2012-03-17T14:48:11.117 に答える
0

すべてのコンポーネントによって既に呼び出されている既存のヘルパー Joomla ファイル内にヘルパー クラスを記述することはできませんか?

デフォルトでは、Joomla には何かを行うヘルパー クラスがあるため、独自のコア ヘルパー クラスを展開するだけで済みます。

于 2012-03-17T14:53:56.140 に答える