Como obter o URL atual dentro da instrução @if (Blade) no Laravel 4?


269

Estou usando o Laravel 4. Gostaria de acessar o URL atual dentro de uma @ifcondição em uma exibição usando o mecanismo de modelagem Laravel's Blade, mas não sei como fazê-lo.

Eu sei que isso pode ser feito usando algo como, <?php echo URL::current(); ?>mas não é possível dentro de uma @ifinstrução blade.

Alguma sugestão?


alguma resposta abaixo ajudou com seu problema?
N69S 20/02

Respostas:


358

Você pode usar: Request::url()para obter o URL atual, aqui está um exemplo:

@if(Request::url() === 'your url here')
    // code
@endif

O Laravel oferece um método para descobrir se o URL corresponde a um padrão ou não

if (Request::is('admin/*'))
{
    // code
}

Verifique a documentação relacionada para obter informações diferentes sobre solicitações: http://laravel.com/docs/requests#request-information


2
<li {{(Request :: is ('admin / dashboard')? 'class = "active"': '')}}> tentei isso, falhou: x
TransformBinary

4
No meu caso eu estava usando uma partida / para o URL, removê-lo iria resolver a questão
Joaquín L. Robles

@Andreyco e se eu preciso colocar um banner em todas as páginas, exceto a página inicial tente isso não funciona@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
Eu uso o próximo formato para ele: <li {!! (Request :: url () == url ('/'))? 'class = "active"': '' !!}>, porque o formato com {{some_code}} usa codificação de string.
Viktor

3
url() agora retorna uma instância do construtor . deve usarurl()->current()
Jeff Puckett

92

Você também pode usar Route::current()->getName()para verificar o nome da sua rota.

Exemplo: routes.php

Route::get('test', ['as'=>'testing', function() {
    return View::make('test');
}]);

Visão:

@if(Route::current()->getName() == 'testing')
    Hello This is testing
@endif

38
Para sua informação, Route::is('testing')é o mesmo que Route::current()->getName() == 'testing'.
Hkan

@Hkan Sem ambos são diferentes, Route::is('testing')- >> testá-lo não vai funcionar Route::is('test')- >> teste que vai funcionar Route::current()->getName() == 'testing'alias e url são diferentes,
Naveen Singh Raghuvanshi

1
@Naveen não, Route::is()verifica o nome da rota, não o caminho.
Hkan

1
também shorthandRoute::currentRouteName()
Jeff Puckett 14/03

@ Hkan Sim, mas isso não funcionaria ao trabalhar com parâmetros no seu URL, por exemplo, tokens ... #
3160

66

Talvez você deva tentar o seguinte:

<li class="{{ Request::is('admin/dashboard') ? 'active' : '' }}">Dashboard</li>

47

Eu faria assim:

@if (Request::path() == '/view')
    // code
@endif

onde '/ view' é o nome da view em routes.php.


Como saber se o diretório atual está em casa? Quero dizer, público /. Ahh, eu consegui, eu só digitar=='public'
Patros

1
Se o diretório home for '/' em route.php, você acabou de escrever== '/')
Jucaman

Como você faria isso funcionar com os parâmetros também? Não é apenas o nome da rota.
Pathros

Você pode concatenar os parâmetros de várias maneiras após o nome da rota, dependendo de como você configurou suas rotas.
Jucaman

Eu faço assim: Request::url()- do que você obtém o URL completo
Derk Jan Speelman

37

Para chegar current urlem bladevista que você pode usar seguinte,

<a href="{{url()->current()}}">Current Url</a>

Então, como você pode comparar usando o código a seguir,

@if (url()->current() == 'you url')
    //stuff you want to perform
@endif

2
Se você precisar obter a string de consulta também no blade, poderá usar o request()->getQueryString()que é muito útil em conjunto com url()->current()o que deixa de fora a string de consulta.
Spencer O'Reilly

25

Isso me ajudou na classe de navegação ativa de inicialização no Laravel 5.2 :

<li class="{{ Request::path() == '/' ? 'active' : '' }}"><a href="/">Home</a></li>
<li class="{{ Request::path() == 'about' ? 'active' : '' }}"><a href="/about">About</a></li>

1
Obrigado, eu sabia o código, mas o Google me trouxe aqui em 5 segundos haha.

Também este mesmo trabalho com o laravel 4.2 e está funcionando bem. Obrigado
Vipertecpro

Também trabalhando no Laravel 5.6, obrigado ... isso me salvou de fazer navs para cada visualização: D
LaravDev 3/18/18

19

Um pouco velho, mas isso funciona em L5:

<li class="{{ Request::is('mycategory/', '*') ? 'active' : ''}}">

Isso captura / mycategory e / mycategory / slug


1
Eu estou usando{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico

16

Laravel 5.4

Funções globais

@if (request()->is('/'))
    <p>Is homepage</p>
@endif

Isso nem sempre funciona se você está lidando com string de consulta como assim domain.com/?page_id=1, domain.com/?page_id=2, como as URLs também igual como "/"
Ryan S

Eu useirequest()->routeIs('...')
Lachezar Todorov 27/01

15

Eu pessoalmente não tentaria agarrá-lo dentro da vista. Eu não sou incrível no Laravel, mas eu imaginaria que você precisaria enviar sua rota para um controlador e, dentro do controlador, passar a variável (por meio de uma matriz) para sua visualização, usando algo como $url = Request::url();.

Uma maneira de fazer isso de qualquer maneira.

EDIT: Na verdade, olhe para o método acima, provavelmente uma maneira melhor.


11

Uma barra de navegação simples com bootstrap pode ser feita como:

    <li class="{{ Request::is('user/profile')? 'active': '' }}">
        <a href="{{ url('user/profile') }}">Profile </a>
    </li>

9

A maneira mais simples é usar: Request::url();

Mas aqui está uma maneira complexa:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();

9

Existem duas maneiras de fazer isso:

<li{!!(Request::is('your_url')) ? ' class="active"' : '' !!}>

ou

<li @if(Request::is('your_url'))class="active"@endif>

8

Você deve tentar o seguinte:

<b class="{{ Request::is('admin/login') ? 'active' : '' }}">Login Account Details</b>

7

Defina esse código como aplicado automaticamente a cada um <li>+ necessário para usar a HTMLBuilderbiblioteca no seu projeto Laravel

<script type="text/javascript">
    $(document).ready(function(){
        $('.list-group a[href="https://stackoverflow.com/{{Request::path()}}"]').addClass('active');
    });
</script>

7

Você pode usar esse código para obter o URL atual:

echo url()->current();

echo url()->full();

Eu recebo isso dos documentos do Laravel.


5

Outra maneira de escrever if e else no Laravel usando path

 <p class="@if(Request::is('path/anotherPath/*')) className @else anotherClassName @endif" >
 </p>

Espero que ajude


4

em vez de usar o URL :: path () para verificar sua localização atual, considere o Route :: currentRouteName () ; caso você atualize seu caminho, não precisará explorar todas as suas páginas para atualizar o nome do caminho novamente.


4

Para rotas nomeadas, eu uso:

@if(url()->current() == route('routeName')) class="current" @endif

4
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"

2
@if(request()->path()=='/path/another_path/*')
@endif

Embora esse código possa responder à pergunta, fornecer um contexto adicional a respeito de por que e / ou como esse código responde à pergunta melhora seu valor a longo prazo.
Rollstuhlfahrer

2

Tente o seguinte:

@if(collect(explode('/',\Illuminate\Http\Request::capture()->url()))->last() === 'yourURL')
    <li class="pull-right"><a class="intermitente"><i class="glyphicon glyphicon-alert"></i></a></li>
@endif

Obrigado por este trecho de código, que pode fornecer ajuda imediata e limitada. Uma explicação adequada melhoraria muito seu valor a longo prazo , mostrando por que essa é uma boa solução para o problema e a tornaria mais útil para futuros leitores com outras perguntas semelhantes. Por favor edite sua resposta para adicionar alguma explicação, incluindo as suposições que você fez.
jhpratt GOFUNDME RELICENSING

1

Tente isto:

<li class="{{ Request::is('Dashboard') ? 'active' : '' }}">
    <a href="{{ url('/Dashboard') }}">
	<i class="fa fa-dashboard"></i> <span>Dashboard</span>
    </a>
</li>



1

A maneira mais simples é

<li class="{{ Request::is('contacts/*') ? 'active' : '' }}">Dashboard</li>

Este grupo captura os contatos /, contatos / criar, contatos / editar ...


1

No arquivo Blade

@if (Request::is('companies'))
   Companies name 
@endif

-1

Tente desta maneira:

<a href="{{ URL::to('/registration') }}">registration </a>

Adicione um pouco de explicação para sua resposta
Pankaj Makwana
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.