Zend framework Zend_路由器参数异常

Zend framework Zend_路由器参数异常,zend-framework,zend-route,Zend Framework,Zend Route,我的问题是,我希望通过URL传递一些参数值,这些参数值不会触发Zend路由,但会导致defaul控制器/操作对 现在,我的index.php中有以下内容: // *** routing info *** $router = Zend_Controller_Front::getInstance()->getRouter(); $router->addRoute('showpage', new Zend_Controller_Router_Route('/show/:title'

我的问题是,我希望通过URL传递一些参数值,这些参数值不会触发Zend路由,但会导致defaul控制器/操作对

现在,我的index.php中有以下内容:

    // *** routing info ***
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute('showpage', new Zend_Controller_Router_Route('/show/:title',
                                                               array('controller' => 'Show',
                                                                       'action' => 'page')));
// annoying exceptions :(
$router->addRoute('addshow', new Zend_Controller_Router_Route('/show/add',
                                                               array('controller' => 'Show',
                                                                       'action' => 'add')));
$router->addRoute('saveshow', new Zend_Controller_Router_Route('/show/save',
                                                               array('controller' => 'Show',
                                                                       'action' => 'save')));
$router->addRoute('addepisode', new Zend_Controller_Router_Route('/show/addEpisode',
                                                               array('controller' => 'Show',
                                                                       'action' => 'addEpisode')));
$router->addRoute('saveepisode', new Zend_Controller_Router_Route('/show/saveEpisode',
                                                               array('controller' => 'Show',
                                                                       'action' => 'saveEpisode')));
如果没有最后4个路由器,URL
/show/add
将导致
show/page
,带有title==“add”。 非常感谢您的帮助。

首先,请使用静态路由

第二,我很确定你不需要包含前导正斜杠,尽管我不确定这是否是一个问题

由于路线是按相反的顺序匹配的,所以你的路线应该是可行的(我认为)。对于任何与“SaveSpidence”、“addEpisode”、“save”或“add”不匹配的内容,都应通过“showpage”路径

我唯一能想到的另一件事是使“showpage”路线更加具体,比如

'show/page/:title'
首先,用于静态路由

第二,我很确定你不需要包含前导正斜杠,尽管我不确定这是否是一个问题

由于路线是按相反的顺序匹配的,所以你的路线应该是可行的(我认为)。对于任何与“SaveSpidence”、“addEpisode”、“save”或“add”不匹配的内容,都应通过“showpage”路径

我唯一能想到的另一件事是使“showpage”路线更加具体,比如

'show/page/:title'

您可以使用正则表达式拒绝add、save、addEpisode和SaveSession

$router->addRoute(
  'showpage', 
  new Zend_Controller_Router_Route(
    '/show/:title',
    array(
      'controller' => 'show',
      'action' => 'page'
    ),
    array(
      'title' => '(?:(?!add)(?!save)(?!addEpisode)(?!saveEpisode).)+'
    )
  )
)

您可以使用正则表达式拒绝add、save、addEpisode和SaveSession

$router->addRoute(
  'showpage', 
  new Zend_Controller_Router_Route(
    '/show/:title',
    array(
      'controller' => 'show',
      'action' => 'page'
    ),
    array(
      'title' => '(?:(?!add)(?!save)(?!addEpisode)(?!saveEpisode).)+'
    )
  )
)