2

このトピックが何度も出てきた可能性があることは十分承知していますが、それでも私がそれを見ている視点は異なると思います.

私は ZF 1.10.8 プロジェクトを持っており、記事、チュートリアル、すべての記事のように、私ContentControllerが静的ページ (それほど静的ではない) と呼んでいるものを本質的に管理しています。about uscontact usproductsNewsController

動的メニューを使用すると、クライアントからの多くの苦情が解決され、サイトのコンテンツをより自由に変更できることがわかりました。

現在、システムに存在するすべてのレイアウトで呼び出す部分的な(layouts/scripts/partials/_mainmenu.phtmlフォルダーの下の)メインメニューバーのみです。

ここで、動的に移動し、新しいリンクが作成された場合、たとえばcategory、カテゴリページをルートにマップする方法 (ルートは /application/configs/routes.ini にあります) は、URL がリンクの値になるためですmenu table。データベース?

最初に考えたのは、すべてをresource処理するNewsControllerように変更するabout usことです。その場合、記事になります。静的ページとして参照したものは異なるビューを必要とするため、それらを処理する方法がわかりません。

自分の考え方に違和感があります。

誰かが私を正しい方向に向けることができますか? あなただったらどうしますか?どのようにjoomlaの人はそれをしますか?

読んでくれてありがとう.....

4

2 に答える 2

0

私のアプローチはrouteStartup()、データベース内の現在のURIの存在をチェックするプラグインを用意することです。URIが見つかった場合は、次の関数を使用して正しいルートが追加されます。

protected function _createRoute($route, $name, $action = "index", $controller = "index", $module = "default", $params)
{
    $router = Zend_Controller_Front::getInstance()->getRouter();

    $defaults = array('controller' => $controller,
                      'action' => $action,
                      "module" => $module);

    $route = new Zend_Controller_Router_Route($route, array_merge($defaults, $params));

            $router->addRoute("region", $route);    
}

コントローラーとモジュールの数に制限がないため、この関数のパラメーターはプラグインにハードコーディングされていますが、DBの行に対して簡単に保存して、より動的にすることができます。

プラグインを追加すると、これは、routeStartup()完了後に新しい正しいルートがディスパッチ操作に使用できることを意味します。

于 2011-03-12T11:51:42.110 に答える
0

名前付きルートを使用してメニューにリンクを作成しています

new Zend_Navigation_Page_Mvc(array(
    'label'      => $category->getTitle(),
    'route'      => 'catalog-category',
    'params'     => array('id' => $category->getId()),
));

モジュールブートストラップで定義されたルートモジュール固有のルートによって処理される正確なモジュール/コントローラー/アクションマッピング。

私の現在のルートの実装はトリッキーで壊れやすいので、これについてこれ以上説明することはできません。最初に大幅にリファクタリングする必要があります。

于 2011-03-12T08:11:01.257 に答える