2011-10-24 11 views
1

私はcakephpでspark_plugプラグインを使用していますが、このプラグインはcakephpの登録ユーザーと管理ユーザーに対してauthentication-aclシステムを提供します。私はいくつかの新しいコードと機能をユーザーのコントローラに追加したいが、私は "メイン"プラグインファイルを変更したくない。cakephpプラグインを拡張します

"メイン"プラグインコントローラを "\ app \ plugins \ spark_plug \ controllers \ users_controller.php"のままにしておき、新しいコードと機能をすべて備えたセカンダリコントローラを作成することができたら、この "\ app \ controllers \ users_controller.php"のようなもので、プラグインの "メイン"コントローラを拡張します。

これは可能ですか?どのように達成するのですか?

または、私がしたいことを行うための他の方法はありますか?

ありがとうございます!

答えて

0

おそらく継承ではなく合成を使用できますか?私。その中にプラグインのコントローラのインスタンスを持つ "app \ controllers \ users_controller"を作成します。がUserControllerは、例えば、スタブを介して任意の無修正アクションを通過:

class UsersController extends AppController { 

    ... 

    var spark_plug_users_controller; 

    ... 

    public function __construct() { 
    parent::__construct(); 

    App::import('Controller', 'SparkPlug/Users'); // this is probably wrong. 
     $this->spark_plug_users_controller = new UsersController; // as is this. 
     $this->spark_plug_users_controller->constructClasses(); 
    } 

    ... 

    //example non-overridden method 
    function login() { 
     return $this->spark_plug_users_controller->login(); 
    } 

    ... 

} 

あなたの問題はspark_plugユーザーコントローラ内の保護/プライベートメソッドにアクセスすることになります。しかし、必要がなければ、これはうまくいくかもしれません。

+0

こんにちはSc0ttyとありがとう。 AppControllerまたはSparkPlugAppControllerから拡張する必要があるかどうかを知っていますか?このファイルのように? https://github.com/jedt/spark_plug/blob/006f3d94c7173ad63a622e386101fd8f000fd210/spark_plug/controllers/users_controller.php – lito

+0

こんにちは、あなたは大歓迎です。 SparkPlugAppControllerではなくAppControllerを拡張する必要があります。プラグイン自体の中にコントローラを追加する場合に限り、SparkPlugAppControllerを拡張します。 – Sc0ttyD

+0

Sc0tty、あなたが提案した方法で新しいユーザコントローラを手配する方法を見つけることができませんでした。数時間後に、どうやってインポートを行うのか分かりませんでした: App :: import( 'SparkPlug.Authsome' =>配列( 'model' => 'User'));またはApp :: import( 'SparkPlug.Authsome'); – lito

関連する問題