2016-09-21 9 views
1

APIを使用してユーザー情報を処理するプラグインをいくつか作成しています。これを完全に処理できるデフォルトプロセスはないので、onAfterRouteを使用してコンポーネントモデルクラスをオーバーライドしています。Joomlaはユーザーのコンポーネントモデルをオーバーライドします

これは単にコンポーネントは= com_usersことを確認して、ビューは=リセットまたは思い出させる:

class plgSystemUseroverride extends JPlugin { 

      public function __construct(&$subject, $config = array()) { 
       parent::__construct($subject, $config); 
      } 

      public function onAfterRoute() { 
       $app = JFactory::getApplication(); 
       $input = $app->input; 
       if('com_users' == $input->get('option') && 'reset' == $input->get('view') && !$app->isAdmin()) {    
        require_once(dirname(__FILE__) . '/user/reset.php'); 
       } 

       if('com_users' == $input->get('option') && 'remind' == $input->get('view') && !$app->isAdmin()) { 
        require_once(dirname(__FILE__) . '/user/remind.php'); 
       } 
      } 
    } 

ファイルは、ユーザーがコンポーネントからコピーされ、私は私のテストのために「思い出させる」変更: 方法をprocessRemindRequest:コンポーネントファイルを直接編集する場合は、しかし、クラスをプラグインとして

$return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $user->email, $subject . " TEST Subject", $body); 

変更が正常に動作しますが上書きされていません。

答えて

0

私はそれを理解しました。ビューを削除し、コンポーネントが 'com_users'であることを確認するだけで十分です。クラスを登録するようにJLoaderを設定します:

public function onAfterRoute() { 
     $app = JFactory::getApplication(); 
     if('com_users' == JRequest::getCMD('option') && !$app->isAdmin()) {  
      JLoader::register('UsersModelReset', dirname(__FILE__) . '/user/reset.php'); 
      JLoader::register('UsersModelRemind', dirname(__FILE__) . '/user/remind.php'); 
     } 
    } 
関連する問題