2

サイトのメインページに最新のニュースタイトルを表示する必要があります。メインページは静的であり、CakeのデフォルトのPagesControllerに基づいています。

私のサイトのニュース部分のテーブル、モデル、コントローラー、ビューがあります。

クックブックで私は

Controller::requestAction

メソッドですが、キャッシュを使用しないとパフォーマンスが低下する可能性があるとも言われています。

私が知っているように、AppController自体ですべて(または一部)のコントローラーに必要なメソッドを作成することもできますが、このメソッドを特定のモデルにリンクするにはどうすればよいですか?

私の目標を達成するための適切なOOPの方法は何ですか?

4

2 に答える 2

1

それがあなたの意図したことかどうかはわかりませんが、追加することで特定のコントローラーに関連しないモデルにアクセスできます

public $uses = array('modelINeed');

コントローラの定義で。詳細については、cakePHPでこのコントローラーを調べCTRL + F、「$uses」を探してください。

あるコントローラーを別のコントローラーにロードすることはお勧めしません。モデルを使用してデータベースからデータを取得してください。

于 2012-08-16T17:07:49.970 に答える
1

コントローラ間でロジック/データを共有する必要がある場合、最善の策はコンポーネントを使用することです。ロジックをコンポーネントに配置し、各コントローラーからコンポーネントのメソッドを呼び出すだけです。


編集

コンポーネントからモデルにアクセスするには、モデルをコンポーネントのメソッドに渡すだけです。例:

成分

public function fetchMyData($model) {
    return $model->find('all');
}

コントローラ

$mydata = $this->ComponentName->fetchMyData($this->ModelName);
于 2012-08-16T17:11:50.240 に答える