具有资源控制器的路由前缀-Laravel 5.5

时间:2018-07-10 12:14:58

标签: laravel laravel-5

Route&Prefix具有相同的名称。我无法获取ID的{​​{1}}参数,该参数为空,如下图所示。使用前缀和资源控制器同名的最佳方法是什么?

Routes / web.php

{hotel}

Route::namespace('Admin\Hotel')->prefix('hotels')->name('hotels.')->group(function () { Route::resource('/', 'HotelController'); Route::resource('rooms', 'RoomController'); Route::resource('rooms/gallery', 'RoomGalleryController'); }); for php artisan route:list

enter image description here

4 个答案:

答案 0 :(得分:2)

我认为使用分组方法会更好,请尝试一下。

Route::group(['namespace' => 'Admin\Hotel', 'prefix' => 'hotel'], function(){
    ...
});

答案 1 :(得分:1)

这是因为资源方法会使用您提供的第一个参数hotel自动添加前缀和命名路由。

因此您可以执行以下操作:

Route::namespace('Admin\Hotel')->group(function () {
    Route::resource('hotels', 'HotelController');
});

或者,您可以删除组功能并直接使用资源方法。

Route::resource('hotels', 'Admin\Hotel\HotelController');

或者,

Route::namespace('Admin\Hotel')->group(function () {
    Route::resource('hotels', 'HotelController');
    Route::prefix('hotels')->name('hotels.')->group(function () {
        Route::resource('gallery', 'HotelGalleryController');
        Route::resource('rooms', 'RoomController');
        Route::resource('rooms/gallery', 'RoomGalleryController');
    });
});

答案 2 :(得分:1)

有时您希望将其分组,因此解决方案是使用parameters方法。

Route::namespace('Admin\Hotel')->prefix('hotels')->name('hotels.')->group(function () {
Route::resource('/', 'HotelController')->parameters(['' => 'hotel']);
Route::resource('rooms', 'RoomController');
Route::resource('rooms/gallery', 'RoomGalleryController');
});

答案 3 :(得分:0)

在混合使用GroupResource时,我有相同的情况,但无法获得ID组(在本例中为Hotel)。

这是我在(Laravel 5.5)中的做法:

Route::group(['prefix' => 'hotel/{hotel}'], function () {
    Route::resource('/', 'HotelController');
    Route::resource('rooms', 'RoomController');
    Route::resource('rooms/gallery', 'RoomGalleryController');
});