AFAIK,在路由中,您不能引用 url 的查询字符串内容,只能引用它的请求路径。但您可以执行以下操作:
添加将旧 url 映射到重定向操作的路由:
$router->addRoute('view-test-redirect', new Zend_Controller_Router_Route_Static(
'view_test.php',
array(
'module' => 'test',
'controller' => 'index',
'action' => 'view-test-redirect',
)
);
此外,添加代表您的“真实”操作的路线:
$router->addRoute('view-test', new Zend_Controller_Router_Route(
'view/test/:user',
array(
'module' => 'test',
'controller' => 'index',
'action' => 'view-test',
)
);
动作名称view-test-redirect
对应于以下动作:
public function viewTestRedirectAction()
{
$user = (int) $this->_getParam('user', null);
if (!$user){
throw new \Exception('Missing user');
}
$this->_helper->redirector->goToRouteAndExit(array('user' => $user), 'view-test');
}
然后你的view-test
动作可以按预期的方式做事:
public function viewTestController()
{
$user = (int) $this->_getParam('user', null);
if (!$user){
throw new \Exception('Missing user');
}
// Read db, assign results to view, praise unicorns, etc.
}
没有经过测试,只是为了证明这个想法而脑残。