Próbuję uzyskać nazwę kontrolera za pomocą nazwy trasy.

Mam trasę ["Dashboard '] i chciałbym uzyskać nazwę kontrolera do późniejszego wykonania metody na tym samym sterowniku.

Przeczytałem dokumentację, ale można znaleźć metodę lub sposób.

https://llavel.com/api/5.7/illuminate/routing/route.html.

Każda sugestia będzie bardzo mile widziana.

4
Vidal 1 marzec 2019, 18:39

2 odpowiedzi

Najlepsza odpowiedź

Jako przykład zapewni Ci informacje o trasie register:

Route::getRoutes()->getByName('register')->action;

Daje to szereg wszystkich informacji, których potrzebujesz:

[
     "middleware" => [
       "web",
     ],
     "uses" => "App\Http\Controllers\Auth\RegisterController@showRegistrationForm",
     "controller" => "App\Http\Controllers\Auth\RegisterController@showRegistrationForm",
     "namespace" => "App\Http\Controllers",
     "prefix" => null,
     "where" => [],
     "as" => "register",
   ]

Jeśli robisz to dużo, możesz dodać makro w swoim RouteServiceProvider:

public function register()
{
    Route::macro('getByName', function($name) {
        return $this->getRoutes()->getByName($name);
    });
}

A teraz możesz po prostu zrobić Route::getByName('register') Aby uzyskać wszystkie informacje o trasie.

4
Ben 1 marzec 2019, 16:13

Możesz spróbować:

get_class(\Request::route()->getController());
0
dparoli 1 marzec 2019, 15:52