Zend Framework好久没有更新,这次更新版本号一下子从0.2.0变成
0.6.0。
我在办公室简单的测试了一下
mywhere.org,结果发现了问题:
Zend_Controller_RewriteRouter::setRewriteBase方法没有了
然后打开0.6.0的文档看一看究竟是什么原因。
原来从0.6开始,Zend Framework开始支持subdirectories的url rewrite,而并不像一开始那样,只有基于root directory才可以。因此设置url rewrite的根目录现在不是router的职责,而是controller的了。明白这个道理,修改起来也比较简单:
//$router->setRewriteBase($baseUrl);
$controller->setBaseUrl($baseUrl);
同时另外的一个新功能是,可以用Zend_Config来配置RewriteRouter。这是我期待已久的,因为对一个网站来说,rewriter router会很复杂,同时规则也会很多。如果都写在index.php里面,会让那个文件很庞大,同时也不要管理和维护。现在可以用Zend_Config来管理,那意味着这些router规则可以写在.ini和.xml的配置文件里。文档中使用了一个小的例子:
/**
* Example INI:
* 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+"
*
* routes.news.type = "Zend_Controller_Router_StaticRoute"
* routes.news.route = "news"
* routes.news.defaults.controller = "news"
* routes.news.defaults.action = "list"
*/
$config = new Zend_Config_Ini($file);
$router = new Zend_Controller_RewriteRouter();
$router->addConfig($config, 'routes');
现在看来晚上回去第一件事情就是需要把目前的那个肩负rewrite router和url generator两项工作的mywhere_rewriterouter进行改造了