4

ほとんどのコードを共有する 2 つのコントローラーがあります (ただし、異なるコントローラーである必要があります)。(少なくとも私にとっては) 明らかな解決策は、クラスを作成し、2 つのコントローラーがそれを継承するようにすることです。問題は... どこに置くの?今は app_controller.php にありますが、ちょっと面倒です。

4

2 に答える 2

9

Cake では、コンポーネントは、複数のコントローラーで使用できるロジックを格納するために使用されます。ディレクトリは /app/controllers/components です。たとえば、共有可能なユーティリティ ロジックがある場合、UtilComponent というオブジェクトと、/app/controlers/components に UtilComponent.php というファイルがあります。

<?php
class UtilComponent extends Object {
    function yourMethod($param) {
        // logic here.......

        return $param;
    }
}
?>

次に、コントローラ クラスに以下を追加します。

var $components = array('Util');

次に、次のようなメソッドを呼び出します。

$this->Util->yourMethod($yourparam);

より詳しい情報:

ドキュメンテーション

于 2008-09-25T16:54:37.750 に答える
4

ところで、「それらは別々のコントローラーでなければならない」という理由が必要なURLである場合。ルーティングを使用できることを忘れないでください。

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
于 2008-09-26T09:57:00.693 に答える