Come posso implementare i controller di risorse se uso molti “get” su laravel?

Ho percorsi laravel come questo:

Route::prefix('member')->middleware('auth')->group(function(){ Route::prefix('purchase')->group(function(){ Route::get('/', 'Member\[email protected]')->name('member.purchase.index'); Route::get('order', 'Member\[email protected]')->name('member.purchase.order'); Route::get('transaction', 'Member\[email protected]')->name('member.purchase.transaction'); }); }); 

Il mio controller in questo modo:

 <?php ... class PurchaseController extends Controller { ... public function index() { ... } public function order() { ... } public function transaction() { ... } } 

Voglio cambiarlo in Resource Controller ( https://laravel.com/docs/5.6/controllers#resource-controllers )

Quindi uso solo 1 percorso

Dal mio caso, i miei percorsi per essere così:

     Route::prefix('member')->middleware('auth')->group(function(){ Route::resource('purchase', 'Member\PurchaseController'); }); 

    Se utilizzo il controller resouce, posso solo dati nel metodo index o show method

    Come posso ottenere dati nel metodo dell’ordine e nel metodo di transazione?

    Potresti provare in questo modo, metti semplicemente il metodo personalizzato del controller delle risorse lungo il percorso delle risorse.

     Route::prefix('member')->middleware('auth')->group(function(){ Route::get('order', 'Member\[email protected]')->name('member.purchase.order'); Route::get('transaction', 'Member\[email protected]')->name('member.purchase.transaction') Route::resource('purchase', 'Member\PurchaseController'); }); 

    Per il controller delle risorse, è definito da Laravel, che contiene solo il metodo 7.

    Mostrato al di sotto della tabella.

    Azione gestita dal controller delle risorse

    Quindi, se vuoi qualche altro metodo, devi defindarti da solo.

     php artisan route:list 

    Puoi usarlo per controllare tutto il percorso che hai definito.

    Le altre risposte qui sono praticamente corrette.

    Dalla mia altra risposta hai collegato questa domanda, da qui in base a ciò che MD Iyasin Arafat ha suggerito, se stai usando laravel 5.5+ :

     # Group all routes requiring middleware auth, thus declared only once Route::middleware('auth')->group(function(){ # Suffix rules in group for prefix,namespace & name with "member" Route::namespace('Member')->prefix('member')->name('member.')->group(function () { Route::get('purchase/order', '[email protected]')->name('purchase.order'); Route::get('purchase/transaction', '[email protected]')->name('purchase.transaction'); Route::resource('purchase', 'PurchaseController'); }); }); 

    Metodi di raggruppamento ( -> gruppo () ):


    Controller Namespace ( -> namespace (‘Member’) )

    Previene su ‘PurchaseController’ per dare ‘Member \ PurchaseController’


    Nome percorso ( -> nome (‘membro.’) )

    Si Prega di nominare (‘purchase.order’) per dare route (‘member.purchase.order’)


    Richiesta URI ( -> prefisso (‘membro’) )

    Preventa / acquista per dare example.com/member/purchase

    Come puoi vedere, l’uso dei metodi precedenti con group () riduce la ripetizione delle dichiarazioni di prefisso.

    Suggerimento

    I percorsi personalizzati devono sempre essere dichiarati prima di una risorsa mai dopo!

    Esempio da utilizzare se si dispone di molti percorsi personalizzati per Purchase Controller e di come un secondo controller cerca il gruppo di membri:

     # Group all routes requiring middleware auth, thus declared only once Route::middleware('auth')->group(function(){ # Suffix rules in group for prefix,namespace & name with "member" Route::namespace('Member')->prefix('member')->name('member.')->group(function () { Route::prefix('purchase')->name('purchase.')->group(function() { Route::get('order', '[email protected]')->name('order'); Route::get('transaction', '[email protected]')->name('transaction'); Route::get('history', '[email protected]')->name('history'); Route::get('returns', '[email protected]')->name('returns'); Route::get('status', '[email protected]')->name('status'); Route::resource('/', 'PurchaseController'); }); Route::prefix('account')->name('account.')->group(function() { Route::get('notifications', '[email protected]')->name('notifications'); Route::resource('/', 'AccountController'); }); }); });