2

私は 3 つのコントローラーを持っていTokens, StoresますUsers

トークンは他の 2 つのモデルに関連しており、トークンごとに所有者タイプと所有者 ID があります。

User_controller と Store_controller の両方に、ユーザーまたはストアを登録した人にアクティベーション リンクを送信する EmailTokenToUser と呼ばれる関数もあります。

私の質問は: 関数をトークンに渡す必要がありますか? もしそうなら、私はそれをどのように呼ぶべきですか?(requestAction は悪い考えで、1 つの関数のためだけにオブジェクトを作成します..)

何か案は?

4

1 に答える 1

2

コードを再利用するには、コントローラーではなくトークンの MODEL に渡す必要があります。それが唯一の方法ではないはずです。これを使用するには、コントローラー内であっても requestAction を使用しないでください (requestAction を使用して実行できる方法です)。これには 2 つの方法があります。

App:import('model', Token');
Token::myFunction($args);

また

$token = ClassRegistry:init('Token');
$token->myFunction($args);

または(コントローラー内から衝突している場合は、使用することもできます)

$this->loadModel('Token');
$this->Token->myFunction($args);

これは、関数を Token モデルに入れる場合です。そうでない場合は、コントローラーの方法を使用して、このようにする必要があります

App:import('controller', 'Tokens');
TokensController::myFunction($args);

また

App:import('controller', 'Tokens');
$token = new TokensController();
$token->myFunction($args);

それがあなたを助けることを願っています:)

于 2011-10-27T18:51:56.560 に答える