0

ディレクトリにカスタムモジュールを作成してい\custom\modulesます.Companys.class.php(からの会社モデルactivecollab\3.3.7\modules\system\models\companies directory)をオーバーライドしたいと思います。関数 findForObjectsList() を使用したいのですが、Angie の useModel() 関数を使用すると、カスタム モジュールからすべてのサイトの企業モデルが読み込まれます。どこでもではなく、モジュールでオーバーライドしたいだけです。

私のinit.phpは次のようなものです:

/**
   * company List module initialisation file
   */

  const COMPANYLIST_MODULE = 'company_list';
  const COMPANYLIST_MODULE_PATH = __DIR__;

  AngieApplication::useModel(array(
    'companies',
  ), COMPANYLIST_MODULE);

私もこれを使用しました:

AngieApplication::setForAutoload('Comapny List', CALENDAR_MODULE_PATH . '/models/companies/ListCompanies.class.php');

しかし無駄に。

4

1 に答える 1

0

AngieApplication::useModel()orAngieApplication::setForAutoload()を使用して組み込みクラスをオーバーライドすることはできませんが、それらを置き換えることができます。「オーバーライド」するには、既存のクラスを完全に置き換え、必要なメソッドを変更する必要があります。

選択したアプローチはお勧めできません。少し戻って、あなたが考えていた実装ではなく、解決しようとしている問題の観点からこれについて話し合う必要があると思います(間違ったアプローチを選択したと思いますが、正確に何を達成しようとしているのかを聞くまでは 100% 確信しています)。

于 2013-05-12T17:48:29.060 に答える