質問2から始めましょう:すべてのページに独自のコントローラーは必要ありません。ページが静的な場合は、単一のアクションを使用してすべてのページをロードすることもできます。より動的な処理のために、ページごとに個別のアクションを使用できます。
いずれの場合も、コードを適切な方法でコントローラーとアクションに構造化するようにしてください。たとえば、CMS内で、ユーザーが投稿を編集、作成、または削除する場合があります。次に、、、およびPostController
を書き込む内部を作成できます。editAction
createAction
deleteAction
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
}
}