2

簡単な CMS アプリを作成して CakePHP を学習しようとしています。うまくいきましたが、さらに追加していくと、MVC 構造に少し混乱しています。

投稿に加えて、サイトの他のページ内の要素として表示したい「コンテンツ ブロック」(基本的には管理者が編集可能なタイトルとコンテンツ フィールド) の単純なモデルを作成しました。

説明を助けるために:

私の Posts コントローラーには、すべてのブログ投稿を一覧表示する index アクションがあります。そのアクションのビューでは、特定の「コンテンツ ブロック」をデータベースから取得して、ページの上部に表示したいと考えています。

もう 1 つの例は、すべてのページのフッターに表示される、管理者が編集可能な「概要」の宣伝文句です。

最後に、Wordpress のテキスト ウィジェットや Magento の静的ブロックと同様に、「コンテンツ ブロック」に直接アクセスできないようにしたいと思います (つまり、domain.com/content_blocks/view/id)。

CakePHP と MVC の規則に忠実でありながら、これを達成する理想的な方法は何ですか? 私はそれにいくつかの刺し傷を負わせました(要素で requestAction を使用するなど)が、さらに混乱することに成功しただけです。

4

1 に答える 1

1

私がそれを行う方法は、URLを介して直接アクセスできないため、要素内のリクエストアクションで提案したとおりです。したがって、elementsフォルダー内にビューを作成します。

app / View / Elements / block.ctp:

<?php $sidebar = $this->requestAction(array(
    'controller' => 'ContentBlocks', 
    'action'=> 'viewBlock', 
    'yourtitle'
)); 
// layout your block here
?>

app / Controller / ContentBlocksController.php

public function viewBlock($title) {
    return $this->ContentBlock->findByTitle($title);
}

次に、要素とrequestActionを使用してキャッシュを実行する方法について、この投稿を参照できます:http: //mark-story.com/posts/view/how-using-requestaction-increased-performance-on-my-site

また、Croogoをチェックアウトすることをお勧めします。これには、探している多くの機能があり、さらに多くの機能が組み込まれています:http: //croogo.org/

于 2012-04-25T19:16:04.670 に答える