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
答案 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)
在混合使用Group
和Resource
时,我有相同的情况,但无法获得ID组(在本例中为Hotel
)。
这是我在(Laravel 5.5)中的做法:
Route::group(['prefix' => 'hotel/{hotel}'], function () {
Route::resource('/', 'HotelController');
Route::resource('rooms', 'RoomController');
Route::resource('rooms/gallery', 'RoomGalleryController');
});