更改锂电池的默认控制器路径

时间:2012-09-05 19:26:52

标签: path router controllers lithium

我正在编写新版本的API,并希望通过为每个版本提供不同的控制器集来支持旧版本。在Lithium的默认“app \ controllers”路径中,我希望有“v1”和“v2”路径。

我尝试通过以下方式在路线内完成此任务:

 Router::connect('/{:version}/{:controller}/{:action}{:args}', array(
        'controller'=> '\app\controllers\{:version}\{:controller}Controller',
    ), array());

然后我尝试通过执行以下操作来覆盖库引导程序模块中的路径:

if( preg_match('/^\/(v[0-9\.]+)/', $_SERVER['REQUEST_URI'], $match) ) {
    Libraries::paths(array(
        'controllers' => "controllers\\".$match[1].'\\{:name}Controller',
        'models' => "models\\".$match[1]."\\{:name}",
    ));
}

我花了大约半天的时间在搜索谷歌和非常稀疏的锂文档。我不确定我们使用的是什么版本的Lithium,因为我已经进入了这个预先存在的代码库。

感谢您提供的任何提示!

1 个答案:

答案 0 :(得分:2)

在routes.php文件中,您应该使用

重新配置Dispatcher默认规则
Dispatcher::config(array('rules' => array(
  'v1' => array('controller' => 'app\controllers\v1\{:controller}Controller')
)));

和匹配/ v1 / ...请求的继续路由

Router::connect('/v1/{:args}', array('v1' => true), array(
  'continue' => true, 'persist' => array('controller', 'v1')
));

如果需要,您可以轻松使用:version而不是预定义的版本号。