私は、php と Joomla の両方の開発から始めていますが、Joomla 内でかなり単純なことを行うのは難しいと感じています。Joomla MVC の例と Lynda を調べました (これまでにいくつかの単純なビューを作成しました)。
「完了」テーブルに存在するすべてのユーザー ID を出力するヘルパー ファイル/クラス/関数があるため、そのユーザーに基づく新しいレコードのリンクを表示したり、既存のユーザーのレコードを編集したりできます。
コンポーネントの別の部分で、このヘルパー ファイルの別の関数を既に正常に使用しています ( Joomla: コンポーネントでヘルパー関数を記述して呼び出す)。
モデルで同じことをすると、次のようになります。 \component\view.php 行 773". ビューで試してみると問題なく動作しますが、モデルに出力が必要です。
コード:
lookups.php
abstract class LookupHelper {
public function other_functions($vars){
...
}
public function completions_exist() {
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->SELECT(' #__completed.completed_userid as UserID');
$query->FROM (' #__completed');
$query->GROUPBY (' #__completed.completed_userid ');
$db->setQuery($query);
$result = $db->loadResultArray(0);
return $result;
}
}
モデルでは:
$completions_exist = Jview::loadHelper('lookups');
$completions_exist = LookupHelper::completions_exist();
この行はエラーをスローしています:$completions_exist = Jview::loadHelper('lookups');
ヘルパー関数をプルする JLoader::register と呼ばれるものへの非常に漠然とした参照をいくつか見つけましたが、Joomla でそれに関する適切なドキュメントを見つけることができません。だから私はそれを次のように使ってみました:
JLoader::register('LookupHelper', dirname( JPATH_COMPONENT_ADMINISTRATOR).DS.'helpers'.DS.'lookups.php');
$completions_exist = LookupHelper::completions_exist();
このエラーがスローされます:「致命的なエラー: クラス 'LookupHelper' が C:\wamp\path\to\model\not\to\lookups.php に見つかりません。JLoader::register(ここにあるすべて) を操作しようとしましたが、うまくいきません」 t は、エラー メッセージのパスに影響を与えます。
考え?モデルではなくビューで機能するのはなぜですか? モデル内でヘルパー関数を使用するにはどうすればよいですか?
ありがとう!
#####編集@cppl のおかげで、コードの 2 番目のビットのパスの問題のようです。また、.DS. 記法は将来のバージョンで段階的に廃止される予定です - したがって、動作しているコードは次のとおりです。
JLoader::register('LookupHelper', JPATH_COMPONENT_ADMINISTRATOR.'/helpers/lookups.php');
$completions_exist = LookupHelper::completions_exist();