1

Joomla データベースとは異なる、リモートで接続する必要があるデータベースがあります。

他のモデル内でこれを簡単に実行できますが、JModelAdmin が機能するには JTable が必要と思われるため、いくつかの問題が発生しています。

代わりに外部データベースを使用するために JTable インスタンスをオーバーライドしようとしましたが、動作したくないようで、「リセット」でエラーが発生します。私の推測では、JTable にはコア Joomla テーブルへのアクセスも必要です。

これを行う簡単な方法はありますか?それとも、コアをオーバーライドすることが唯一のオプションですか?

編集: 明確にするために、Joomla をデータベースに接続してクエリを実行することができます。唯一の問題は、JTable が外部データベースで適切に初期化することを拒否することです。

これが私のモデルの私のコンストラクタです:

function __construct($config = array()){
    $config['dbo'] = TireApiHelper::tireAPIDB();
    parent::__construct($config);
} 

これはリストモデルでは機能しますが、管理モデルでは機能しません。私のリストモデルにはテーブルクラスは必要ありませんが、コントローラーは管理モデルを使用して公開/非公開にする必要があります。これが問題です。JTable は現在設定されている DB インスタンスを使用しますが、Joomla エラーなしで false を返します (コードによると、false を返すと joomla エラーが表示されるはず$tableです。

4

1 に答える 1

1

これを実現する方法はいくつかありますが、重要な点は、新しいデータベース オブジェクトを作成することです。その方法については、こちらを参照してください。このオブジェクトを取得したら、次のことができます。

  1. コンストラクターまたはメソッドを使用して、JTable クラス拡張機能を使用するように設定しますsetDBO(...)これを参照してください。
  2. ドキュメンテーション サイトで説明されているように、JTable を使用せずにこのオブジェクトとクエリ オブジェクトを使用することを選択します。

乾杯。

于 2013-07-19T20:34:48.017 に答える