我有一个这样的网址:view_test.php?user=56
我想在这里得到它:
$router->addRoute(
'test',
new Zend_Controller_Router_Route(
'test/view/:id',
array(
'module' => 'test',
'controller' => 'index',
'action' => 'view'
)
)
);
基本上从view_test.php?user=56
到/test/view/56
我不确定如何处理?
。
任何想法?
感谢
答案 0 :(得分:0)
AFAIK,在一个路线中,你不能引用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.
}
没有经过测试,只是通过大脑倾销来证明这个想法。