我怎样才能实现资源控制器,如果我使用的laravel许多“搞定”?我怎样才能实现资源控制器,如果我使

2019-05-12 13:50发布

我有途径laravel这样的:

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

我的控制器是这样的:

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

我想将其更改为资源控制器( https://laravel.com/docs/5.6/controllers#resource-controllers )

所以我只用1个路由

从我来说,我的路线是这样的:

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

如果我使用种源控制器,I在索引方法或显示方法只能数据

我怎样才能得到订购方法和交易方法的数据?

Answer 1:

你可以尝试这样的,只要把你的资源控制器自定义的方法了资源的途径。

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


Answer 2:

对于资源控制器,它是由Laravel,其仅含有7方法预先定义。

在低于表中所示。

所以,如果你需要的任何其他方法,你必须都由你自己来definde。

php artisan route:list

您可以使用此功能来检查你定义的所有航线。



Answer 3:

在这里的其他答案是非常正确的。

从我的其他回答你,这里基于这样的链接这一问题有什么MD Iyasin阿拉法特曾建议, 如果你正在使用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', 'PurchaseController@order')->name('purchase.order');
            Route::get('purchase/transaction', 'PurchaseController@transaction')->name('purchase.transaction');
            Route::resource('purchase', 'PurchaseController');

    });

});

分组方法- >组()):


控制器命名空间- >命名空间( '会员'))

预先考虑到“PurchaseController”“会员\ PurchaseController”


路由名称- >名称( '成员'。))

预先考虑到的名字(“purchase.order”)得到的路由(“member.purchase.order”)


URI请求- >前缀( '部件'))

预先考虑到/转让example.com/member/purchase

正如可以看到的,使用上述方法用组()减少前缀声明的重复。

暗示

定制路由必须始终资源 之前从未宣布后!

例如,如果你有很多关于购买控制器和如何第二控制器查找组成员定制路由的使用方法:

# 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', 'PurchaseController@order')->name('order');

                Route::get('transaction', 'PurchaseController@transaction')->name('transaction');

                Route::get('history', 'PurchaseController@history')->name('history');

                Route::get('returns', 'PurchaseController@returns')->name('returns');

                Route::get('status', 'PurchaseController@status')->name('status');

                Route::resource('/', 'PurchaseController');

            });

            Route::prefix('account')->name('account.')->group(function() {

                Route::get('notifications', 'AccountController@notifications')->name('notifications');

                Route::resource('/', 'AccountController');

            });

    });

});


文章来源: How can I implement Resource Controllers if I use many “get” on the laravel?