2016-09-12 11 views
1

この形式をもう一度使用しました。私のroutes.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.

質問を取得する必要があり、私のHomeController.phpで

Route::controller('datatables', 'HomeController', [ 
    'PaymentsData' => 'payments.data', 
    'getIndex' => 'datatables', 
]); 

を持って、なぜ廃止またはそれをやってのこの形式は、誰かが何か間違っている?親切にお手伝いします。ありがとうございました。

答えて

3

私が知っている限り、それはLaravel 5では利用できませんでした。私は4を使用していないので、5より前は分かりません。しかし、5ではRoute::getRoute::postを使用する必要があります。

Route::get('datatables', ['as' => 'HomeController', 'uses' => '[email protected]']); 
Route::get('payments-data', ['as' => 'HomeControllerPaymentsData', 'uses' => '[email protected]']); 

うん、それは暗黙のコントローラーを使用して除去し、悪い習慣です - https://github.com/illuminate/routing/commit/772fadce3cc51480f25b8f73065a4310ea27b66e#diff-b10a2c4107e225ce309e12087ff52788L259

2

controller方法はLaravel 5.3で廃止されました。 docsから

Laravelリソースルーティングが持つコントローラに典型的な「CRUD」のルートを割り当てます。しかし、今、あなたはcontroller法と同じ目的のために意味されるresource方法を、使用することができます1行のコード。たとえば、アプリケーションによって保存された "写真"のすべてのHTTP要求を処理するコントローラを作成することができます。

としてそれを使用してください:

Route::resource('datatables', 'HomeController'); 

この暗黙のルーティングの欠点は、あなたが、一貫ドキュメントでそれについての詳細をあなたの方法に名前を付ける必要があるということです。

ほとんどの場合、コードをもっとはっきりと理解しやすくするために、より良い方法は明示的ルーティングです。

関連する問題