No Laravel v4, consegui obter o nome da rota atual usando ...
Route::currentRouteName()
Como posso fazer isso no Laravel v5 e no Laravel v6 ?
No Laravel v4, consegui obter o nome da rota atual usando ...
Route::currentRouteName()
Como posso fazer isso no Laravel v5 e no Laravel v6 ?
Respostas:
Tente isto
Route::getCurrentRoute()->getPath();
ou
\Request::route()->getName()
da v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Ou se você precisar do nome da ação
Route::getCurrentRoute()->getActionName();
Documentação de rotas do Laravel 5.2
Recuperando o URI da Solicitação
O método path retorna o URI da solicitação. Portanto, se a solicitação de entrada for direcionada http://example.com/foo/bar
, o método path retornará foo/bar
:
$uri = $request->path();
O is
método permite verificar se o URI da solicitação de entrada corresponde a um determinado padrão. Você pode usar o *
caractere como curinga ao utilizar este método:
if ($request->is('admin/*')) {
//
}
Para obter o URL completo, não apenas as informações do caminho, você pode usar o método url na instância de solicitação:
$url = $request->url();
Laravel v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Documentação de rota do Laravel 5.3
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** Atual a partir de 11 de novembro de 2019 - versão 6.5 **
Documentação de rota do Laravel 6.x
Existe uma opção para usar solicitação para obter rota
$request->route()->getName();
api/...
Route::currentRouteName();
perfect :)
$request::route()->getName()
se você já estiver usando a solicitação $ ou pode usar o assistente global request()::route()->getName()
.
request()->route()->getName()
é o caminho a percorrer.
request()
função auxiliar é particularmente útil nas visualizações. request()->route()->getName()
é a melhor opção.
Usando o Laravel 5.1, você pode usar
\Request::route()->getName()
{{ route(\Request::route()->getName()) }}
. Muito obrigado!
Foi encontrada uma maneira de encontrar o nome da rota atual para o laravel v5 , v5.1.28 e v5.2.10
Namespace
use Illuminate\Support\Facades\Route;
e
$currentPath= Route::getFacadeRoot()->current()->uri();
Para o Laravel laravel v5.3, você pode simplesmente usar:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
Se você precisar de URL , não de nome da rota , não precisará usar / exigir nenhuma outra classe:
url()->current();
Se você deseja selecionar o menu em várias rotas, faça o seguinte:
<li class="{{ (Request::is('products/*') || Request::is('products') || Request::is('product/*') ? 'active' : '') }}"><a href="{{url('products')}}"><i class="fa fa-code-fork"></i> Products</a></li>
Ou, se você quiser selecionar apenas um menu, basta fazer o seguinte:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Também testado no Laravel 5.2
Espero que isso ajude alguém.
Laravel 5.2 Você pode usar
$request->route()->getName()
Fornecerá o nome atual da rota.
name()
método adicionará ou alterará o nome, enquanto o getName()
método o retornará.
Na 5.2, você pode usar a solicitação diretamente com:
$request->route()->getName();
ou pelo método auxiliar:
request()->route()->getName();
Exemplo de saída:
"home.index"
O caminho mais curto é a fachada da rota
\Route::current()->getName()
Isso também funciona no laravel 5.4. *
Em uma ação do controlador, você pode apenas fazer:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
aqui é resolvido pelo contêiner de serviço do Laravel.
getName()
retorna o nome da rota apenas para rotas nomeadas , null
caso contrário (mas você ainda pode explorar o \Illuminate\Routing\Route
objeto para algo mais interessante).
Em outras palavras, você deve ter sua rota definida assim para que "nameOfMyRoute" seja retornado:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Agora, no Laravel 5.3
, estou vendo que isso pode ser feito da mesma maneira que você tentou:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Acessando a rota atual
Obter o nome da rota atual nos modelos Blade
{{ Route::currentRouteName() }}
para obter mais informações https://laravel.com/docs/5.5/routing#accessing-the-current-route
Acessando a rota atual (v5.3 em diante)
Você pode usar os métodos current, currentRouteName e currentRouteAction na fachada da rota para acessar informações sobre a rota que trata da solicitação recebida:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Consulte a documentação da API para a classe subjacente da fachada Route e a instância Route para revisar todos os métodos acessíveis.
Referência: https://laravel.com/docs/5.2/routing#accessing-the-current-route
$request->route()->getName();
Eu usei para obter o nome da rota no larvel 5.3
Request::path()
Observando, \Illuminate\Routing\Router.php
você pode usar o método currentRouteNamed()
injetando um roteador no método do seu controlador. Por exemplo:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
ou usando a fachada da rota:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
Você também pode usar o método is()
para verificar se a rota é nomeada com algum dos parâmetros fornecidos, mas cuidado com esse método preg_match()
e experimentei causar um comportamento estranho com nomes de rotas pontilhadas (como 'foo.bar.done'
). Há também a questão do desempenho em torno do preg_match()
qual é um grande assunto na comunidade PHP.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Você pode usar o método abaixo:
Route::getCurrentRoute()->getPath();
Na versão Laravel> 6.0, você pode usar os métodos abaixo:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Acessando o nome da rota atual no controlador
ie- http: // localhost / project_name / edit
$ request-> segmento (1); //editar
(ou)
$ request-> url (); // http: // localhost / project_name / edit
Em um arquivo auxiliar,
Você pode usar Route::current()->uri()
para obter o URL atual.
Portanto, se você comparar o nome da sua rota para definir a classe ativa no menu, seria bom se você usasse
Route::currentRouteName()
para obter o nome da rota e comparar
por alguns motivos, não consegui usar nenhuma dessas soluções. então eu declarei minha rota em web.php
como $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
e no meu controlador eu tenho o nome do percurso utilizando a $routeName = $request->route()[1]['as'];
qual $request
é \Illuminate\Http\Request $request
typehinted parâmetro no index
método deUserController
usando o Lumen 5.6. Espero que ajude alguém.
Solução:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Você pode usar o código abaixo para obter o nome da rota no arquivo blade
request()->route()->uri