2016-09-12 7 views
1

Also habe ich dieses Format wieder verwendet. In meinem routes.php habe ichMethodencontroller ist nicht vorhanden.

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

In meinem HomeController.php habe ich

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); 
    } 

Immer wenn ich php artisan versuche ich [BadMethodCallException] Method controller does not exist.

Frage zu bekommen, ist diese Form es Deprecation zu tun oder warum Wer sieht etwas falsch? Bitte helfen. Vielen Dank.

Antwort

3

Soweit mir bekannt ist, war das nie für Laravel 5 verfügbar. Ich habe 4 nicht verwendet, also bin ich mir nicht sicher vor 5. Aber in 5 müssen Sie Route::get und Route::post verwenden.

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

Yep, wurde es als mit impliziten Controller entfernt ist eine schlechte Praxis - https://github.com/illuminate/routing/commit/772fadce3cc51480f25b8f73065a4310ea27b66e#diff-b10a2c4107e225ce309e12087ff52788L259

2

Die controller Methode seit Laravel 5.3 veraltet. Aber jetzt können Sie die resource Methode verwenden, die für den gleichen Zweck wie die controller Methode gemeint ist:

Vom docs:

Laravel Ressource Routing ordnet die typischen „CRUD“ Routen zu einem Controller mit eine einzelne Codezeile. Beispielsweise möchten Sie möglicherweise einen Controller erstellen, der alle HTTP-Anforderungen für "Fotos" verarbeitet, die von Ihrer Anwendung gespeichert werden.

Verwenden Sie es als:

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

Der Nachteil dieses impliziten Routing ist, dass Sie konsequent Ihre Methoden zu nennen haben, mehr darüber in der Dokumentation.

In den meisten Fällen wäre eine bessere Praxis explizite Routing, wie es Ihren Code viel klarer und verständlich macht.

Verwandte Themen