我有像这样的路线:
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');
});
如果我使用资源控制器,我只能在index方法或show方法中使用数据
如何按顺序方法和交易方法获取数据?
答案 0 :(得分:3)
您可以尝试这样做,只需将资源控制器自定义方法放在资源路径上。
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');
});
答案 1 :(得分:2)
对于资源控制器,它由Laravel预定义,它只包含7方法。
如下表所示。
所以,如果你想要任何其他方法,你必须自己定义。
php artisan route:list
您可以使用它来检查您定义的所有路线。
答案 2 :(得分:1)
这里的其他答案非常正确。
从我的另一个答案中,您将这个问题与此相关联,这是基于 MD Iyasin Arafat </ em>建议的方式,如果您使用的是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');
});
});
分组方法( - &gt; group()):
控制器命名空间( - &gt;命名空间('会员'))
预先'PurchaseController'给予 的 '会员\ PurchaseController'强>
路线名称( - &gt; name('member。'))
以名称('purchase.order')为前提 的路线( 'member.purchase.order')强>
URI请求( - &gt;前缀('成员'))
前 /购买以提供 example.com/member/purchase
如您所见,使用上面的方法和group()可以减少前缀声明的重复。
<强>提示强>
自定义路由必须始终在资源之前之前声明为!
如果您有大量购买控制器的自定义路由以及第二个控制器如何查找成员组,则使用示例:
# 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');
});
});
});