所以我再次使用这种格式。在routes。php中有
Route::controller('datatables', 'HomeController', [
'PaymentsData' => 'payments.data',
'getIndex' => 'datatables',
]);
在我的homecontroller。php中有
public function getIndex()
{
return view('payments.index');
}
/**
* Process datatables ajax request.
*
* @return 'Illuminate'Http'JsonResponse
*/
public function Payments()
{
return Datatables::of(DB::table('customer'))->make(true);
}
每次我尝试php artisan
都会得到[BadMethodCallException] Method controller does not exist.
问题,这种方式是废弃的还是为什么有人发现错误?请协助。谢谢你。
自Laravel 5.3起,controller
方法已弃用。但是现在,您可以使用resource
方法,它的目的与controller
方法相同:
From the docs:
Laravel资源路由通过一行代码将典型的"CRUD"路由分配给控制器。例如,您可能希望创建一个控制器来处理应用程序存储的"照片"的所有HTTP请求。
用作:
Route::resource('datatables', 'HomeController');
这种隐式路由的缺点是你必须一致地命名你的方法,更多关于它的文档。
在大多数情况下,更好的做法是显式路由,因为它使您的代码更加清晰易懂。
据我所知,Laravel 5从未提供此功能。我没有用过4,所以我不确定5之前的情况。但是在5中,你需要使用Route::get
和Route::post
。
Route::get('datatables', ['as' => 'HomeController', 'uses' => 'HomeController@getIndex']);
Route::get('payments-data', ['as' => 'HomeControllerPaymentsData', 'uses' => 'HomeController@Payments']);
是的,它被删除为使用隐式控制器是不好的做法- https://github.com/illuminate/routing/commit/772fadce3cc51480f25b8f73065a4310ea27b66e#diff-b10a2c4107e225ce309e12087ff52788L259