私はクライアント用のカスタムコンポーネントを開発しましたが、ユーザーがメールアドレスを再利用できるようにする必要がありました。 Joomlaは一意のメールアドレスを必要としたため、「onAfterRoute」で起動して代わりにJTableUserクラスをロードするシステムプラグインを作成しました。
これは理想的ではありませんが、最終結果を達成するための最良の方法でした。
Joomla 3.6をインストールしたばかりで、から何かを使用しようとするとJTableUserクラスを再宣言できないという致命的なエラーが発生します。元のクラスがonAfterRouteトリガーの前に呼び出されていると思います。
class PlgSystemMyComponentOverride extends JPlugin
{
public function __construct(&$subject, $config = array()) {
parent::__construct($subject, $config);
}
public function onAfterRoute() {
$app = JFactory::getApplication();
$option = JRequest::getCMD('option');
if('com_users' == JRequest::getCMD('option')) {
require_once('path_to_my_code.php');
}
}
}
Joomla 3.6でこれを修正する方法はありますか?
ありがとう
リー
JTableUserは非常にトリッキーです。フレームワークの初期化時に初めてロードされるため、システムプラグインで簡単にオーバーロードすることはできず、メモリから削除することはできません。
この問題を解決するには、patch関数を作成する必要があり、元のJUserクラスがコアでシステムプラグインに置き換えられています。
$this->patch('JTableUser', '/libraries/joomla/table/user.php');