0

ユーザーがさまざまな状況でページ上のさまざまなパラメーターを選択できるため、同じビュー (インデックス) をレンダリングする約 5 ~ 6 個のアクションを持つコントローラー (メイン ページ用) があります。各アクションは、それぞれの状況を処理します。

ここで、メイン ページに最新ニュースを表示する必要があります。シンプルに見える...だから私は追加した

$this->set('fetchednews', $this->News->getLatestNews());

私のインデックスアクションに追加すると、正常に機能します。

しかし、前に述べたように、このページには同じビューを持つさまざまなアクションのセットがあります。

したがって、ユーザーが domain.com にアクセスすると、最新のニュースが表示されますが、ユーザーがリンクをクリックすると、たとえば

domain.com/mainPageController/sortById/1 

彼は最新のニュースを見なかった

action sortById

$this->set('fetchednews', $this->News->getLatestNews()); がありませんでした。

要素を使用する必要があり、要素で使用する必要があります

$news = $this->News->getLatestNews();

次に、この要素をインデックス ビューで使用しますか? または、繰り返す必要があります

$this->set('fetchednews', $this->News->getLatestNews());

メインページコントローラーに追加する各アクションに?

この状況を適切に処理するにはどうすればよいですか?

4

2 に答える 2

1

beforeFilterすべてのアクションを設定する必要があると仮定して、 を使用するのはどうfetchednewsですか?

function beforeFilter() {
    $this->set('fetchednews', $this->News->getLatestNews());
}
于 2012-09-20T20:47:09.437 に答える
0

私があなたなら、共有する必要のあるすべての機能を、コントローラーをパラメーターとして取り込んで一般的なアクションを実行する新しいメソッドにまとめます。ニュースを必要とする各アクションからの呼び出しが必要ですが、少なくともそれを変更したり、1か所でコードを追加したりできます...

私は自分でCIを使用する傾向があるため、Cakeに精通していませんが、次のようなものです...

function MyAction1() {
    //Other code
    $this->CommonCode();
}

function CommonCode() {
    $this->set('fetchednews', $this->News->getLatestNews());
}

または、(アクション自体として解釈されないように)コントローラーの外部に関数を移動したい場合は、コントローラーをメソッドに渡します...

function MyAction1() {
    //Other code
    CommonCode($this);
}

//Different class
function CommonCode($controller) {
    $controller->set('fetchednews', $this->News->getLatestNews());
}
于 2012-09-20T19:36:58.777 に答える