php 基于前缀的控制器方法返回的最佳实践

yeotifhr  于 2023-01-19  发布在  PHP
关注(0)|答案(1)|浏览(98)

web.php中,我有两个路由,一个用于管理员,另一个用于用户,如下所示

Route::prefix('admin')->group(function () {
    Route::get('', [AdminController::class, 'index'])->name('admin');
    Route::resources(['categories' => CategoryController::class);
});

Route::resources(['categories' => CategoryController::class);

然后我使用CategoryController.php从数据库获取数据并返回一个视图:

public static function index()
{
    $categories = Category::paginate(5);

    return response()->view('categories.categories', ['categories' => $categories]);
}

我希望根据视图样板是/admin/categories还是/categories来修改视图样板。
我有一个解决方案,但我想知道针对CategoryController中所有函数的最佳实践
一个米五个一个x、一个米六个一个x、一个米七个一个x、一个米八个一个x、一个米九个一个x、一个米十个一个x和一个米十一个一个x。

vcirk6k6

vcirk6k61#

控制器方法不应为static
您可以使用Laravels依赖注入器在控制器方法中获取请求对象:

public function index($request) 
{
    if (str_starts_with($request->getPathInfo(), '/admin')) {
        // admin controller stuff
    } else {
        // regular controller stuff
    }
}

最佳做法:

值得一提的是,这打破了所谓的 * 单一责任原则 *(SRP),在SRP中,您将多个责任赋予一个方法。
我建议您将此逻辑拆分到两个控制器上,这样就不必担心以下问题:

  • AdminCategoryController
  • CategoryController

相关问题