2009-05-27 13 views
0

私はmod-rewriteルータを使用しています。
BASEURL /カテゴリ/ AAA/mycontroller/myaction/PARAM /値Zend Frameworkのルータにルートを追加する

がために:私は、次のURLに変換しますルータにルートを追加しようとしています


コントローラーを= mycontroller
アクション= myaction

--parameters--

カテゴリ= AAA
のparam =値

私は私のブートストラップで(動作しない)、次を使用しています、_frontはfrontController

$Router=$this->_front->getRouter(); 
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*'); 
$Router->addRoute('category', $CategoryRoute); 

である私は(とZend_Viewの:: URL()ヘルパーを使用していたときに私が手にエラーがスローされたルータの例外ですまたは新しい経路の名前を与えなくても)。
私はbaseurl/category/....がある場合にのみ例外がスローされます

私は何が欠けていますか?

私が逃したもの:
URLに[カテゴリ]があったので、使用していたルータは上記で定義したものです。
私はurl()ヘルパーを使用したとき、私は[カテゴリ]に値を与えなかったので、urlの部分にこのキーの値はありませんでした。 デフォルトを指定すると動作します。余分のparams

答えて

6

の有無を指定するためのスタートを追加

2
$Router=$this->_front->getRouter(); 
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*'); 
$Router->addRoute('category', $CategoryRoute); 

てみてくださいあなたはsolomongabyにより示唆されるように/ *含める必要があります。

必要なパラメータ(カテゴリ、コントローラ、アクション)をすべて指定していない場合は、デフォルト値を指定する必要があります。

次のようにあなたがそうすることができます。

$Router=$this->_front->getRouter(); 

$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*', 
    array(
     'controller' => 'index', 
     'action'  => 'index', 
     'category' => null 
    ) 
); 
$Router->addRoute('category', $CategoryRoute); 
+0

url()ヘルパーを使用しようとするとZend_Controller_Router_Exceptionがスローされます。 –

+0

ルータの名前を送信しようとしましたが、変更はありません: $ this-> url(array( 'controller' => 'test')、 'category'、true); –

+0

あなたは例外を教えてくれますか? –

0

をあなたは、URLビューヘルパー(カテゴリ、のcontrolerのパラメータのすべてをルートを作成するときのデフォルトを指定する(dcauntの記事を参照してください)OR を指定する必要がありますし、アクション)

関連する問題