1

私は CakePHP 2.2.3 を使用しており、自分のサイトの管理/ダッシュボード エリアを構築する必要があります。

このモデルに関連する多くのモデルとコントローラーがあり、ダッシュボードにはすべての投稿/ユーザー/ニュースなどを CRUD する機能が必要です。

明らかに、ダッシュボードの「ホーム」ページを表示するインデックスアクションを備えたダッシュボードコントローラーを構築する必要があります。

私の質問は: 投稿/ユーザー/その他の追加/編集のために、他のすべてのアクションをどこに配置するのですか? このすべてのアクションをこの新しいダッシュボード コントローラーに配置する必要がありますか?それとも、このアクションを関連するコントローラー (投稿/ユーザー..) に配置する方がよいでしょうか?

4

2 に答える 2

4

それぞれのコントローラーで特定のアクションを保持します。DashbaordsControllerは、さまざまなモデル情報を表示する必要のあるページには問題ありませんが、CRUDアクションは独自のコントローラーに保持する必要があります。

単一のページでそのページでCRUDアクションを実際に実行できるようにする必要がある場合は、ajaxを使用して、その特定のコントローラーのアクションを呼び出すことができます。

結論として、すべてのCRUDを単一のコントローラーに入れようとすると、面倒になり、将来のプログラマー(これから6か月後の自分も含む)にとって非常に混乱します。

他のモデルからのデータを含めるのは非常に簡単なので、$this->loadModel('MyModel');それぞれのコントローラーでCRUDアクションを実行してもそれほど問題にはなりません。繰り返しになりますが、DashboardsControllerは、実際にはダッシュボードのようないくつかのページには問題なく、特定のモデルとの提携はありません。ただし、各モデルのCRUDについてはそうではありません。

于 2012-12-06T07:05:04.290 に答える
0

一般的に理想的な方法は、スキニーコントローラーを実行し、モデルに近いスタックのできるだけ下にロジックを保持することです。理想的には、コードの再利用とテストのためにライブラリを導入する必要があります。ロバート・マーティン、別名アンクル・ボブは、Web配信とデータベースは可能な限りプラグインである必要があると述べています。これにより、ユニットテストが大幅に向上します。あなたの特定のケースに関しては、私はそれをRESTの近くに保ちたいと思います。そうすれば、コントローラーを分離して、理想的にはいくつかのより低いレベルのものに委任することができます。

于 2012-12-06T05:06:01.623 に答える