为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
GCT1015 2022-07-22 10:18:53
在我寻找干净的代码时,我正在使用 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,请告诉我。
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

如果您在查找路线时遇到问题,并且您想将路线放置在其他地方而不是 web.php,请按照以下步骤操作


Step1:在 App\Providers 中的 RouteServiceProvider 里面,在 mapApiRoutes() 之后定义一个函数


public function mapCustomWebRoutes()

{

     Route::middleware('web') // or any other middleware if u want to use

         ->namespace($this->namespace) // By default namespace is define as the 

          // App\Http\Controllers in the top of this file. If u want to change           

           // can change it

         ->group(base_path('routes/new_web.php')); // new_web is the name of 

           // another file inside routes

}

然后在map函数中像这样调用这个函数


public function map()

{

      $this->mapApiRoutes();

      $this->mapWebRoutes();

      // calling the function 

      $this->mapCustomWebRoutes();

}

现在在你的路由文件夹中创建一个名为 new_web.php 的文件,现在你可以像这样定义你的路由


<?php


   Route::get('/something','SomethingController@something');

希望这可以帮助你


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信