0

私はいくつかのcms関数を備えた簡単なウェブサイトを書いています。すべてのメニュー項目とページの内容をデータベースに保持しておくとよいでしょう。

id、、、およびフィールドnameを持つテーブルがあります。将来的には、コンテンツをテーブルに移動して、fkを使用してメニュー項目に複数のコンテンツを含める可能性があります。しかし、ここではそうではありません。parent_idcontentcontent

質問は:

  1. メニューテーブルにURLフィールドが必要ですか?
  2. それを機能させるには他に何が必要ですか?すべてのページに独自のコントローラーが必要ですか?私は初心者zend frameworkなので、いくつかの指示をください。前もって感謝します。
4

1 に答える 1

0

質問2から始めましょう:すべてのページに独自のコントローラーは必要ありません。ページが静的な場合は、単一のアクションを使用してすべてのページをロードすることもできます。より動的な処理のために、ページごとに個別のアクションを使用できます。

いずれの場合も、コードを適切な方法でコントローラーとアクションに構造化するようにしてください。たとえば、CMS内で、ユーザーが投稿を編集、作成、または削除する場合があります。次に、、、およびPostControllerを書き込む内部を作成できます。editActioncreateActiondeleteAction

URLをテーブルに保存することもできますが、必ずしもそうする必要はありません。

シングルアクションアプローチ(主に静的コンテンツ用)

ページidまたはnameがGETパラメータに保存されていることを確認してください。次に、次のコードを使用できます。

public function genericpageAction()
{
    $thePageID = $this->_request->getParam('id');

    // fetch the page content from the db based on $thePageID
    // and pass it to the view
}

もちろん、ここでは、そのアプローチを選択した場合、テーブルに格納されているURLと照合することもできます。

マルチアクションアプローチ(より動的な処理のために、おそらくCMSで必要なもの)

各ページのルートを定義し、それぞれのアクションでそのコンテンツをロードできます。たとえば、投稿を編集するページの場合:

class MyCMS_PostController extends Zend_Controller_Action
{
    public function editAction()
    {
        // fetch the home page content
        // do any further processing if necessary
    }
}
于 2012-08-13T10:42:11.233 に答える