我是从 laravel4-sae 转过来的。
lumen 的路由由于替换成了 nikic/FastRoute
跟 laravel 有稍稍的不同 ~
整理下我的新得,路过的给下建议 ~~ 高手就别鄙视了。。
-
lumen 基于 laravel5 是十分注重命名空间的
将 route 绑定到 controller 需要写类的全名 ~php// 错误的写法 $app->get('/', [ 'as' => 'index', 'uses' => 'MainController@index' ]); // 正确的写法 $app->get('/', [ 'as' => 'index', 'uses' => 'App\Http\Controllers\MainController@index' ]);这里给大家一个 小小的 tip ~
如果大家的Controller都在app/Http/Controllers这个目录的话,
可以通过Route Groups来简写php$app->group(['namespace' => 'App\Http\Controllers'], function($app) { $app->get('/', [ 'as' => 'index', 'uses' => 'MainController@index' ]); $app->get('admin', [ 'as' => 'admin', 'uses' => 'AdminController@index' ]); }); -
也许有人跟我一样需要定义中文路径,例如:
xxx.com/你好xxx.com/中国
这在laravel里是支持的也没什么问题,但是lumen换成了nikic/FastRoute
而且衔接部分没做完善 ~~ 所以自己动手丰衣足食!php// vendor/laravel/lumen-framework/src/Application.php#1347 public function getPathInfo() { $query = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : ''; return '/'.ltrim(str_replace('?'.$query, '', $_SERVER['REQUEST_URI']), '/'); } // 修改后 public function getPathInfo() { $query = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : ''; $path = '/'.ltrim(str_replace('?'.$query, '', $_SERVER['REQUEST_URI']), '/'); return rawurldecode($path); }已经将这个改动提交了 https://github.com/laravel/lumen-framework/pull/114
希望能被早日合并到官方主分支 ^__^
嗯。 暂时就这么多了 ~~
亲爱的,这是问答栏目。