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 ismé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:
Isso retorna um erro: "Chamada para uma função de membro current () em um não-objeto". url () retorna uma string, não um objeto, então eu não acho que isso poderia ter funcionado. Talvez você estivesse pensando em algum outro método ou objeto, em vez de url ()?
$request aqui é resolvido pelo contêiner de serviço do Laravel.
getName()retorna o nome da rota apenas para rotas nomeadas , nullcaso contrário (mas você ainda pode explorar o \Illuminate\Routing\Routeobjeto para algo mais interessante).
Em outras palavras, você deve ter sua rota definida assim para que "nameOfMyRoute" seja retornado:
Obrigado por uma resposta adequada, perdi 30 minutos tentando sugestões inúteis.
Crasher
3
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:
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.
por alguns motivos, não consegui usar nenhuma dessas soluções. então eu declarei minha rota em web.phpcomo $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 $requesttypehinted parâmetro no indexmétodo deUserController
Respostas:
Tente isto
ou
da v5.1
Laravel v5.2
Ou se você precisar do nome da ação
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
: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: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:
Laravel v5.3 ... v5.8
Documentação de rota do Laravel 5.3
Laravel v6.x ... 7.x
** 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
fonte
api/...
Route::currentRouteName();
perfect :)$request::route()->getName()
se você já estiver usando a solicitação $ ou pode usar o assistente globalrequest()::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
fonte
{{ 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
e
Para o Laravel laravel v5.3, você pode simplesmente usar:
fonte
Se você precisar de URL , não de nome da rota , não precisará usar / exigir nenhuma outra classe:
fonte
Se você deseja selecionar o menu em várias rotas, faça o seguinte:
Ou, se você quiser selecionar apenas um menu, basta fazer o seguinte:
Também testado no Laravel 5.2
Espero que isso ajude alguém.
fonte
Laravel 5.2 Você pode usar
Fornecerá o nome atual da rota.
fonte
name()
método adicionará ou alterará o nome, enquanto ogetName()
método o retornará.Na 5.2, você pode usar a solicitação diretamente com:
ou pelo método auxiliar:
Exemplo de saída:
fonte
O caminho mais curto é a fachada da rota
\Route::current()->getName()
Isso também funciona no laravel 5.4. *
fonte
Em uma ação do controlador, você pode apenas fazer:
$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:
fonte
Você pode usar no modelo:
fonte
Agora, no Laravel
5.3
, estou vendo que isso pode ser feito da mesma maneira que você tentou:https://laravel.com/docs/5.3/routing#accessing-the-current-route
fonte
Acessando a rota atual
Obter o nome da rota atual nos modelos Blade
para obter mais informações https://laravel.com/docs/5.5/routing#accessing-the-current-route
fonte
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:
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
fonte
Request::path();
é melhor e lembre-se deuse Request;
fonte
fonte
Eu usei para obter o nome da rota no larvel 5.3
Request::path()
fonte
Observando,
\Illuminate\Routing\Router.php
você pode usar o métodocurrentRouteNamed()
injetando um roteador no método do seu controlador. Por exemplo:ou usando a fachada da rota:
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étodopreg_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 dopreg_match()
qual é um grande assunto na comunidade PHP.fonte
Na minha opinião, a solução mais fácil é usar este auxiliar:
Para os documentos, consulte este link
fonte
Você pode usar o método abaixo:
Na versão Laravel> 6.0, você pode usar os métodos abaixo:
fonte
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
fonte
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 compararfonte
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 noindex
método deUserController
usando o Lumen 5.6. Espero que ajude alguém.
fonte
Solução:
fonte
Você pode usar o código abaixo para obter o nome da rota no arquivo blade
fonte