Intereting Posts
Как загрузить шаблон из полного пути в движок шаблонов TWIG как установить pspell в php5 / ubuntu? Оптимизация скриптов командной строки php для обработки больших плоских файлов PHPExcel: загрузить файл Excel на стороне клиента Объекты, переданные в поле выбора, должны управляться JQuery – Drag n Drop Files – Как получить информацию о файле? Правильный способ удаления всех файлов старше 2 дней в PHP Как я могу использовать gzip для своих веб-файлов Отправка нескольких уведомлений о переносе iphone + APNS + PHP + Tutorial Как получить список экземпляров EC2 с помощью Amazon PHP SDK 2? Как измерить скорость кода, написанного на PHP? Как остановить предупреждения в парсере phpDocumentor, когда я наследую внешний класс библиотеки? удаление повторяющихся символов рядом друг с другом Временные учетные данные с использованием AWS IAM переопределяя блок пурпурного цвета в нескольких модулях (и как игнорировать другие)

Laravel 5 как получить название действия маршрута?

Я пытаюсь получить текущее действие маршрута, но я не уверен, как это сделать. В Laravel 4 я использовал Route::currentRouteAction() но теперь это немного другое.

Я пытаюсь выполнить Route::getActionName() в моем контроллере, но он продолжает давать мне метод не найден.

 <?php namespace App\Http\Controllers; use Route; class HomeController extends Controller { public function getIndex() { echo 'getIndex'; echo Route::getActionName(); } } 

В Laravel 5 вы должны использовать метод или конструктор инъекции. Это сделает то, что вы хотите:

 <?php namespace App\Http\Controllers; use Illuminate\Routing\Route; class HomeController extends Controller { public function getIndex(Route $route) { echo 'getIndex'; echo $route->getActionName(); } } 

Чтобы получить имя действия, вам необходимо использовать:

 echo Route::getCurrentRoute()->getActionName(); 

и не

 echo Route::getActionName(); 

Чтобы получить название действия маршрута в Middleware, я делаю это:

 <?php namespace App\Http\Middleware; use Closure; use Illuminate\Routing\Router; class HasAccess { protected $router; public function __construct(User $user, Router $router) { $this->router = $router; } public function handle($request, Closure $next) { $action_name = $this->router->getRoutes()->match($request)->getActionName(); //$action_name will have as value 'App\Http\Controllers\HomeController@showWelcome' //Now you can do what you want whit the action name return $next($request); } } 

EDIT: вы не получите маршруты, защищенные этим промежуточным программным обеспечением 🙁

Вместо

 use Illuminate\Routing\Route; 

Использовать это

 use Illuminate\Support\Facades\Route; 

Если вы хотите получить псевдоним маршрута, вы можете использовать:

 Route::getCurrentRoute()->getName() 

Чтобы получить только имя действия (без имени контроллера):

 list(, $action) = explode('@', Route::getCurrentRoute()->getActionName()); 

Чтобы получить только имя метода, вы можете использовать …

 $request->route()->getActionMethod() 

или с фасадом …

 Route::getActionMethod() 

Для Laravel 5.1 используйте:

 $route = new Illuminate\Routing\Route(); $route->getActionName(); // Returns App\Http\Controllers\MyController@myAction $route->getAction(); // Array with full controller info 

В этом классе есть много полезных методов. Просто проверьте код для получения более подробной информации.

Чтобы получить только имя действия в Laravel 5.4

explode('@', Route::getCurrentRoute()->getActionName())[1]

Невозможно найти лучший способ, использовать в поле зрения, в одной строке …

Вы можете использовать, чтобы получить информацию о контроллере из самого запроса

 $request->route()->getAction()