0

私はしばらく前からプロジェクトを作成しており、デフォルトのルーティングである :module\:controller:\:action を使用しています。しばらくして、次のようなルーターを構成に追加しました。

resources.router.routes.page.route = "page/:slug"
resources.router.routes.page.defaults.module = "default"
resources.router.routes.page.defaults.controller = "pages"
resources.router.routes.page.defaults.action = "view"
resources.router.routes.page.defaults.slug = ""

しかし、その後、新しいルートの 1 つでビュー URL ヘルパーによって生成されたリンクをクリックすると、他のすべてのリンクは指定されたパラメーターの一部を無視します。例、私はルートを持っています:

resources.router.routes.project.route = "project/:slug"
resources.router.routes.project.defaults.module = "projects"
resources.router.routes.project.defaults.controller = "projects"
resources.router.routes.project.defaults.action = "view"
resources.router.routes.project.defaults.slug = ""

リンク /project/test に移動すると、次のようにリンクします。

$this->url(
    array('module' => 'admin', 'action' => 'list-users', 'controller' => 'users')
, null,true
);

「/project」を指します

カスタム ルートの上にデフォルト ルーティングを維持する可能性はありますか? デフォルトのルーターと同じように機能するデフォルトのルーターを追加できますか? それはおそらく単純なことですが、ポイントを逃したかもしれません。すべての助けをありがとう。

私はこのようなものを追加しましたが、効果はありません:

resources.router.routes.default.route = ":module/:controller/:action"
resources.router.routes.default.defaults.module = "default"
resources.router.routes.default.defaults.controller = "pages"
resources.router.routes.default.defaults.action = "view"
resources.router.routes.default.defaults.slug = ""
4

2 に答える 2

0

問題は、url ヘルパーのオプションが次のようになっていることです。

url($urlOptions, $name, $reset)

したがって、 に設定$nameするとnull、現在のルート ( 'project') が使用されます。イベント設定$resetではありませんtrue。に置き換えるnull'default'、動作するはずです。

于 2012-05-18T21:58:49.700 に答える
0

カスタム ルーティングを設定するには、ルーター コンポーネントを取得し、ルートを渡す必要があります。

これは、私が取り組んでいるプロジェクトで私が行った方法です。Bootstrap クラスで、次の関数を作成します。

protected function _initRoutes()
{
    $this->bootstrap('frontcontroller');
    $front = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $myRoutes = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini','production');
    $router->addConfig($myRoutes,'routes');

これにより、フロント コントローラーが呼び出され、そこからルーターが取得されます。次に、ルート構成をそれに渡します。

これがあなたの質問に答えることを願っています。

于 2012-05-16T12:27:06.340 に答える