0

それは私の2つのルーターです:

->addRoute('viewTextMaterial', new Zend_Controller_Router_Route(':mCat/:mCatSub/:mId/:mTitle', array('controller' => 'index', 'action' => 'viewtextmaterial')))
->addRoute('viewNews', new Zend_Controller_Router_Route(':nCat/:nId/:nTitle/:page', array('controller' => 'index', 'action' => 'viewnews')))

index.phtml ファイルにこれを追加します。

<a href="<?= $this->url(array('mCat' => 'Test', 'mCatSub' => 'Test', 'mId' => 7, 'mTitle' => 'Test'), 'viewTextMaterial') ?>">Test</a>

経験値 viewnews の URL:

<a href="<?= $this->url(array('nCat' => News, 'nId' => 5, 'nTitle' => Some title, 'page' => 1), 'viewNews') ?>">some text</a>

しかし、href をクリックすると「viewnews」にリダイレクトされるのはなぜですか?

4

1 に答える 1

1

私の経験では(これはあまり素晴らしいことではありません:))名前の前にコロンを使用すると、ルーターを定義しているとき、つまり次のようになります

'/:mCat/:mCatSub/:mId/:mTitle',
      array(
           'controller' => 'index', 
           'action'    => 'viewtextmaterial'
            )

ルーターに指示しているのは、上記の形式 ('/:mCat/:mCatSub/:mId/:mTitle') に従う任意の URL をルーティングして、そこで言及したコントローラー/アクションにルーティングすることです。例えば。

someController/アクション/x/y

また

アノコント/アクト/a/b

同じコントローラー/アクションにルーティングされます。

したがって、あなたの場合、同じオプションで2つのルーターを定義しており(あいまいさが生じます)、デフォルトでは2番目に定義されたルートが使用されます(下から上へのマッチング)。

このようなものを使用できます

'/test/:mCatSub/:mId/:mTitle',
          array(
               'controller' => 'index', 
               'action'    => 'viewtextmaterial'
                )

そのため、(URL 内の) コントローラーとして「test」で始まるものはすべて、目的のコントローラー/ビューにルーティングされます。

うまくいくことを願っています.. :) (そうでない場合は、私に教えてください:) )

于 2012-09-12T03:45:17.377 に答える