我想在我的laavel应用程序中显示同一个Slug上的不同内容.
下面的代码对帖子和页面很有吸引力,所以如果插件与页面/帖子插件匹配,它就会加载内容.
Routes/web.php:
/// ADMIN ROUTES
Route::middleware(['web', 'auth'])->prefix('admin')->group(function () {
Route::get('/', [AdminController::class, 'index'])->name('admin');
Route::resource('roles', RoleController::class);
Route::resource('pages', BackendPageController::class);
Route::resource('permissions', PermissionController::class);
Route::resource('posts', BackendPostController::class);
Route::resource('users', UserController::class);
Route::resource('packages', PackageController::class);
Route::delete('/users', [UserController::class, 'deleteAll'])->name('users.delete');
Route::delete('/pages', [BackendPageController::class, 'delete'])->name('pages.delete');
Route::prefix('modules')->group(function () {
Route::get('/', [ModuleController::class, 'index'])->name('modules.index');
Route::get('/enable/{moduleName}', [ModuleController::class, 'enable'])->name('modules.enable');
Route::get('/disable/{moduleName}', [ModuleController::class, 'disable'])->name('modules.disable');
});
});
/// FRONTEND ROUTES
Route::middleware('web')->group(function () {
Route::get('/', [ContentController::class, 'homePage']);
Route::get('/{slug}', [ContentController::class, 'show'])->where('slug', '^[a-z0-9-]+$');
});
app\\Http\\Controllers\\ContentController.php
展示法:
public function show($slug)
{
$page = Page::where('slug', $slug)->first();
$post = Post::where('slug', $slug)->first();
if ($page) {
return view('frontend.pages.show', compact('page'));
}
if ($post) {
return view('frontend.posts.show', compact('post'));
}
abort(404);
}
但我想使用laravel-modules程序包,如果我为ex.:product创建一个新模块,则模块\Product\routes\web.php中的默认路由为:
Route::prefix('product')->group(function() {
Route::get('/', 'ShopController@index');
});
但是由于我的内容控制器show方法逻辑,本地主机/产品链接抛出了一个404错误...如果插件与页面/POST插件不匹配,那么如何使用默认逻辑来实现这一点?
我不想将页面和帖子分开,比如本地主机/页面/XY或本地主机/帖子/XY