2010-12-16 26 views
0

問題)

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute(
    'test', 
    new Zend_Controller_Router_Route(
     '/test/:action/:type/:id', 
     array(
      'controller' => 'admin' 
     ) 
    ) 
); 

http://app/test/param1/param2/param3 - > OK

http://app/test/param1/param2/ - >アプリケーションがPARAM2を認識しない第2のケースで

に失敗。

アプリケーションがPARAM2を読み取るためにparam3を必要としているようです...

私はそれをどのように行うことができますか?

ありがとうございます! > OK

http://app/test/some - - > OK

http://app/test/some/more - @RageZ

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute(
    'test', 
    new Zend_Controller_Router_Route(
     '/test/:action/:type/:id', 
     array(
      'controller' => 'admin', 
      'id' => 0 
     ), 
     array(
      'id' => '\d+' 
     ) 
    ) 
); 

http://app/test/からコードで


試験> FAIL

http://app/test/some/more/andmore - > OK

アイデア?

+1

最後のコードがタイプ...;)のデフォルトでありません。 –

答えて

1

はいくつかのテストプロジェクトにあなたのコードを試してみましたが、これは、それはそれはあなたのために働く願う固定すべて

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute(
    'test', 
    new Zend_Controller_Router_Route(
     '/test/:action/:type/:id', 
     array(
      'controller' => 'admin', 
      'action' => 'index', 
      'type' => 'sometype', 
      'id' => 0 
     ), 
     array(
      'id' => '\d+' 
     ) 
    ) 
); 

にデフォルト値を与えてみてください!

1

パラメータがオプションの場合は、デフォルト値を指定する必要があります。

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute(
    'test', 
    new Zend_Controller_Router_Route(
     '/test/:action/:type/:id', 
     array(
      'controller' => 'admin', 
      'id' => 0 
     ), 
     array(
      'id' => '\d+' 
     ) 
    ) 
); 

質問には関係ありませんが、addRouteの3番目のパラメータを使用することをお勧めします。 Zend Frameworkは、パラメータの値が指定したフォーマットと一致しているかどうかを検証します。その場合、idは整数です。

+0

「タイプ」は何ですか? – joanballester

+0

@joanballester:デフォルト値を持つ必要があるかどうかを知り、フォーマットを指定する必要があります。あなたのケースでは、URLはうまくいくでしょう – RageZ

+0

すみませんが、私はできません!私は試し続けます(私は記事を編集しました) – joanballester