是否可以在该特定控制器中定义控制器特定路由

在我寻找干净的代码时,我正在使用 laravel 中的单动作控制器。在那些单动作控制器中,我有一个 __invoke 和一个 __construct。它们看起来像这样:


 public function __construct()

    {

        $this->middleware('auth');

        $this->middleware(['permission:create documents']);

    }



public function __invoke($id)

{

    $machine = Machine::find($id);

    return view('document.create', compact('machine'));

}

我在 web.php 文件中定义了创建文档路径,如下所示:


Route::get('/document/create/{id}', CreateDocument::class)->name('document.create');

因为我使用单动作控制器,这会导致 web.php 文件中有很多路由,这会导致有时很难找到路由的问题。


是否可以在控制器的 __construct 函数中定义路由,而不是将其放在 web.php 文件中?如果可能的话,我该怎么做。


我已经研究过是否可能并且找不到我的问题的遮篷。


我不知道 StackOverflow 是问这个问题的最佳场所,如果我应该将它放在其他地方而不是 StackOverflow,请告诉我。


GCT1015
浏览 88回答 1
1回答

慕沐林林

如果您在查找路线时遇到问题,并且您想将路线放置在其他地方而不是 web.php,请按照以下步骤操作Step1:在 App\Providers 中的 RouteServiceProvider 里面,在 mapApiRoutes() 之后定义一个函数public function mapCustomWebRoutes(){&nbsp; &nbsp; &nbsp;Route::middleware('web') // or any other middleware if u want to use&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;->namespace($this->namespace) // By default namespace is define as the&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // App\Http\Controllers in the top of this file. If u want to change&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// can change it&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;->group(base_path('routes/new_web.php')); // new_web is the name of&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// another file inside routes}然后在map函数中像这样调用这个函数public function map(){&nbsp; &nbsp; &nbsp; $this->mapApiRoutes();&nbsp; &nbsp; &nbsp; $this->mapWebRoutes();&nbsp; &nbsp; &nbsp; // calling the function&nbsp;&nbsp; &nbsp; &nbsp; $this->mapCustomWebRoutes();}现在在你的路由文件夹中创建一个名为 new_web.php 的文件,现在你可以像这样定义你的路由<?php&nbsp; &nbsp;Route::get('/something','SomethingController@something');希望这可以帮助你
打开App,查看更多内容
随时随地看视频慕课网APP