我在zend框架中有一个模块,我可以通过这个URl访问:www.example.com/questionnaire/
我想将URl中的questionnaire
更改为questionnaire-test
。
这是我从Bootsrap.php
文件中提取的代码,但无法解决我需要更改的内容。
if(!in_array('backoffice', $layout) && (in_array('questionnaire', $layout))){
$langRoute = new Zend_Controller_Router_Route(
':lang/',
array(
'lang' => 'fr',
)
);
$defaultRoute = new Zend_Controller_Router_Route(
':controller/:action',
array(
'module'=>'questionnaire',
'controller'=>'index',
'action'=>'index'
)
);
$defaultRoute = $langRoute->chain($defaultRoute);
$router->addRoute('langRoute', $langRoute);
$router->addRoute('defaultRoute', $defaultRoute);
/*---------------------------------*/
$router->addRoute('home',
new Zend_Controller_Router_Route_Regex(
'([a-z]{2})/',
array(
'module'=>'questionnaire',
'controller'=>'index',
'action'=>'index'
),
array(
1 => 'lang',
),
'%s/'
)
);
}
答案 0 :(得分:0)
您的定义似乎是主路线www.example.com/en/
而不是www.example.com/en/questionnaire/
。
如果您正在寻找www.example.com/en/questionnaire-test/
:
$router->addRoute('questionnaire',
new Zend_Controller_Router_Route_Regex(
'([a-z]{2})/questionnaire-test',
array(
'module'=>'questionnaire',
'controller'=>'index',
'action'=>'index'
),
array(
1 => 'lang',
),
'%s/questionnaire-test'
)
);
答案 1 :(得分:0)
标准路由器Zend_Controller_Router_Rewrite
默认使用将按名称匹配的路由:module /:controller /:action request。您可以通过调用
$router->removeDefaultRoutes();
这应该使路由器仅基于您定义的路由工作。然后你应该能够像这样到达模块:
$router->addRoute(new Zend_Controller_Router_Route('questionnaire-test/:controller/:action', array(
'module' => 'questionnaire',
'controller' => 'index',
'action' => 'index')));