2016-08-31 24 views
5

Laravel 5.2から5.3にアップグレードしました。アプリケーションのいくつかのテーブルにLaravel-DataTablesパッケージを使用しています。私はartisan serveを実行したとき、私は受け取っていアップグレード後Route :: controller()Laravel 5.3 +

[BadMethodCallException] 
Method controller does not exist. 

を私は自分のroutes.phpのコードのこの部分にまで問題を追跡してきた(今web.php

Route::controller('datatables', 'ProfileController', [ 
    'anyOrders' => 'datatables.dataOrders', 
    'anyProperties' => 'datatables.dataProperties', 
]); 

ですDataTables Documentationのクエリをルーティングするための推奨される方法。

Route::controller()は廃止されましたが、これらのルートの代替手段は何ですか?

答えて

7

明示routesは次のようになります。

Route::get('/datatables/orders', array('middleware' => 'auth', 'uses' => '[email protected]'))->name('datatables.dataOrders'); 
Route::get('/datatables/properties', array('middleware' => 'auth', 'uses' => '[email protected]'))->name('datatables.dataProperties'); 
+0

ありがとう、エラーを解決しました。私は「ミドルウェア」=>「認証」を削除しなければならなかった。 – Grigio

+0

@ArturGrigio助けて嬉しいです –

+3

、私は暗黙のルートが5.3で行ったことを知っています。まだどこかでこれを可能にするパッケージはありますか?またはこれを戻すために私は何ができますか? - 私はそれをしてはいけない理由を議論することなく... :) – ericbae

2

https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0

以下の機能が5.2で廃止され6月2016年に5.3のリリースでは削除されますRoute::controllerを用い

  • 暗黙コントローラルートが廃止されています。あなたのルートファイルに明示的なルート登録を使用してください。これはおそらくパッケージに抽出されます。
+0

私のユースケースの*明示的なルートは何ですか? – Grigio

+0

@ArturGrigio "ルートファイルに明示的なルート登録を使用してください。" – ceejayoz

5

私はあなたと同じ問題を持っていた、および代替(明示的な宣言や出版)のどれも十分ではなかったです。あまりにも多くのコードを変更する必要があったいくつかの選択肢もありました。

これが私がAdvancedRouteと呼ばれるクラスを書いた理由です。これは、置換のドロップとして機能します。

それは単にルートを交換することによって使用することができます:: AdvancedRouteとコントローラ::このようなコントローラ:

AdvancedRoute::controller('users','UserController'); 

でGitHubのレポで見つけインストールして使用する方法全情報:

https://github.com/lesichkovm/laravel-advanced-route

あなたはこれが便利だと思っていますか?

0

resource()を使用できます。

Route::resource('users','UserController'); 

注:「get」接頭辞は必要ありません。 getIndex() = index()