【发布时间】:2015-06-14 04:54:57
【问题描述】:
所以,假设我确实有一个简单的控制器来处理书籍。
App\Http\Controllers\SimpleBooksController
在routes.php里面我为它注册了一条路由:
Route::get('books/{id}','SimpleBooksController@doSimpleStuff');
但书的世界并不是那么简单。所以我想要另一个控制器来处理非常复杂的书籍内容。
在我的脑海中,我想像这样的东西会非常有用:
class ComplexBooksController extends SimpleBooksController
这样子类没有显式处理的路由回退到父类。
现在假设每本书都知道它是否复杂:$book->isComplex
而我想做的就是这样的
if (!$book->isComplex) {
// route 'books/{id}' to SimpleBooksController@doSimpleStuff
} else {
// route 'books/{id}' to ComplexBooksController@doComplexStuff
}
那么,如何才能做到这一点呢?
* 编辑 *
我目前处理这个问题的方式是在 routes.php 中静态设置控制器,但让它们监听参数化路由:
Route::get('books/simple/{id}', 'SimpleBooksController@doSimpleStuff');
Route::get('books/complex/{id}', 'ComplexBooksController@doComplexStuff');
【问题讨论】: