CakePHP のどこにコントローラーの親クラスを配置しますか?

StackOverflow https://stackoverflow.com/questions/134470

  •  02-07-2019
  •  | 
  •  

質問

コードの大部分を共有する 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'));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top