CakePHP1.3で再利用可能なコンテンツブロックを作成するための最適なアプローチについてお聞きしたいと思います。
再利用可能なコンテンツブロックの下では、ページを構築するために使用される部分的なビューを意味します。たとえば、eshopアプリケーションでは、ミニカートの概要は再利用可能なコンテンツブロックと見なすことができます。これは、各ページヘッダーに表示されます。
CakePHP 1.3には2つの可能性があります(そして両方とも深刻な欠点があります):
要素/app/plugins/myeshop/elements/minicart.ctpを作成し、
$this->element('minicart)
この再利用可能なコンテンツをヘッダーなどに読み込むために使用します。不利な点は、これがカートエンティティのビジネスを多くの場所にくちばしにすることです。Minicartは、ビューがコントローラー/app/plugins/myeshop/controllers/carts_controller.phpによって処理されるカートエンティティの一部の表現にすぎません。では、なぜそれをコントローラーから外して要素に保持するのでしょうか?要素は、ヘッダー、フッター、interactive_mapなどの一般的な再利用可能なコンテンツを保持するのに適しています...アプリケーションのビジネスオブジェクト/エンティティに関連しないもの。対応するビューを持つメソッドCartsController::minicart()を作成し、
$this->requestAction('/myeshop/carts/minicart')
この再利用可能なコンテンツをヘッダーなどにロードするために使用します。利点は、CartエンティティのすべてのビジネスとビューがCartsControllerによって処理されるようになったことです。要素に隠されたサイドロジックとサイドビューはありません。このアプローチの欠点は明らかです-requestAction()の使用には多くの時間がかかります。
この時点で、requestAction()を非常に注意深く使用する必要があることに完全に同意していると言わなければなりません。これを使用してコントローラーの手続き型/ビジネスロジックを呼び出すことは、アプリケーションの設計としては不適切です。このような種類のロジックは、コントローラーではなくモデルに配置する必要があります。それでも、私見では、コントローラーアクションを呼び出して、部分的/再利用可能なコンテンツ(ビュー)を取得し、エンティティビジネスを1か所に維持することは正当です。
CakePHPにはこれに最適なソリューションがありますか?