Можно ли определить контроллер, указанный c маршруты в этом указанном c контроллере, вместо размещения маршрутов в сети. php - PullRequest
0 голосов
/ 13 января 2020

В поисках чистого кода я работаю с контроллерами одиночного действия в 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'));
}

И я определяю маршрут создания документа в Интернете. php файл выглядит так:

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

Поскольку я использую контроллеры одиночного действия, это приводит к много файлов в файле. php, и это вызывает проблему, из-за которой иногда трудно найти маршруты.

Можно ли определить маршрут в функции __construct контроллера вместо размещения его в файле. php? И если это возможно, как я могу это сделать.

Я исследовал, возможно ли это, и не могу найти сюрприз для моего вопроса.

Я не знаю, является ли StackOverflow лучшим местом для того, чтобы задать этот вопрос, если мне нужно разместить его где-нибудь еще вместо StackOverflow, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 13 января 2020

Если у вас возникли проблемы с поиском маршрутов, и вы хотите разместить свои маршруты где-то еще, а не в Интернете. php Выполните шаги

Шаг 1: Go для RouteServiceProvider в App \ Providers и внутри там после 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
}

Затем в функции карты вызовите эту функцию следующим образом:

public function map()
{
      $this->mapApiRoutes();
      $this->mapWebRoutes();
      // calling the function 
      $this->mapCustomWebRoutes();
}

Теперь в папке маршрутов создайте файл с именем new_web. php и Теперь вы можете определить свои маршруты там, как это

<?php

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

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...