質問
コードの大部分を共有する 2 つのコントローラーがあります (ただし、異なるコントローラーである必要があります)。(少なくとも私にとって) 明らかな解決策は、クラスを作成し、2 つのコントローラーがそのクラスを継承するようにすることです。事は...どこに置きますか?これを app_controller.php に入れましたが、ちょっと面倒です。
解決
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);
より詳しい情報:
他のヒント
ところで、「別個のコントローラーである必要がある」理由が、必要な URL である場合。ルーティングを使用できることを覚えておいてください。
Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
所属していません StackOverflow