在我的Bootstrap.php
中,我有以下代码来定义路线:
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute('pageDetails', new Zend_Controller_Router_Route('page-details/:uid/:title', array(
'module' => 'default',
'controller' => 'list',
'action' => 'detail',
), array(
'uid' => '\d+',
'title' => '(.*)?',
)));
这很有效。
然后我尝试将路由设置更改为使用定义路由的.ini
文件。 .ini
文件如下所示:
[routes]
pageDetails.route = "page-details/:uid/:title"
pageDetails.default.module = "default"
pageDetails.default.controller = "list"
pageDetails.default.action = "detail"
pageDetails.reqs.uid = "\d+"
pageDetails.reqs.title = "(.*)?"
我在Bootstrap.php
中添加路线:
$config = Zend_Registry::get('config');
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addConfig(new Zend_Config_Ini($config['routes']['configPathname'], 'routes'));
尽管.ini
版本和PHP代码中定义的路由应该完全相同,但.ini
版本不起作用。前端没有错误消息,链接看起来没问题但是点击了这条路线的链接后我才被重定向到起始页面。
缺少什么?
答案 0 :(得分:1)
尝试在文档中添加前缀'routes':
[routes]
routes.archive.route = "archive/:year/*"
routes.archive.defaults.controller = archive
routes.archive.defaults.action = show
routes.archive.defaults.year = 2000
routes.archive.reqs.year = "\d+"
然后试试这个:
$config = Zend_Registry::get('config');
$routes = new Zend_Config_Ini($config['routes']['configPathname'], 'routes')
Zend_Controller_Front::getInstance()->getRouter()->addConfig($routes, 'routes');
答案 1 :(得分:0)
您不能在密钥中使用{}|&~![()^"
个字符,如果使用这些字符,则必须为该值的字符串加双引号。
所以双引号:
pageDetails.reqs.title = ""(.*)?""
有关详情,请参阅:http://php.net/manual/en/function.parse-ini-file.php