駆け出しの 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];
だから...それは機能しています-しかし、これを行うためのはるかに簡単な方法があるようです(具体的には、配列を手動で作成してから位置で呼び出す)。考え?
ありがとうございました!!