Laravel5.1框架下有關路由的一種解決辦法

先來描述一下遇到的問題:

Route::get('shop/list', "ShopController@list");
Route::get('user/list', "UserController@list");
Route::get('video/list', "VideoController@list");
Route::get('article/list', "ArticleController@list");
Route::get('photo/list', "PhotoController@list");
Route::get('song/list', "SongController@list");
Route::get('staff/list', "StaffController@list");

瞭解laravel框架的肯定知道上述路由的意義,如果我們有很多models,那路由豈不是要寫很多條,現在我想實現的功能就是:

/{model}/lists 轉發到{$model}Controller控制器的lists方法
如 /shop/lists => shopController控制器 lists方法,
/user/lists => userController控制器 lists方法,
...

解決辦法就是:

以下代碼適用於 Laravel 5.0 及以上:
Route::get('{model}/lists', function ($model) {
  $className = 'App\Http\Controllers\\'.ucfirst(strtolower($model)).'Controller';
  $obj = new $className;
  return $obj->lists();
});





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章