¿Cómo obtener la URL actual dentro de la declaración @if (Blade) en Laravel 4?


269

Estoy usando Laravel 4. Me gustaría acceder a la URL actual dentro de una @ifcondición en una vista usando el motor de plantillas Blade de Laravel, pero no sé cómo hacerlo.

Sé que se puede hacer usando algo como, <?php echo URL::current(); ?>pero no es posible dentro de una @ifdeclaración de blade.

¿Alguna sugerencia?


¿alguna de las respuestas a continuación ayudó con su problema?
N69S

Respuestas:


358

Puede usar: Request::url()para obtener la URL actual, aquí hay un ejemplo:

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

Laravel ofrece un método para averiguar si la URL coincide con un patrón o no.

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

Consulte la documentación relacionada para obtener información de solicitud diferente: http://laravel.com/docs/requests#request-information


2
<li {{(Request :: is ('admin / dashboard')? 'class = "active"': '')}}> intenté esto, fallé: x
TransformBinary

44
En mi caso, estaba usando un inicio / para la URL, eliminarlo resolvería el problema
Joaquín L. Robles

@Andreyco, ¿qué pasa si necesito poner un banner en todas las páginas, excepto en la página de inicio? Intento que esto no funcione@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

44
Yo uso el siguiente formato para ello: <li {!! (Solicitud :: url () == url ('/'))? 'class = "active"': '' !!}>, porque el formato con {{some_code}} usa codificación de cadena.
Viktor

3
url() ahora devuelve una instancia de constructor . debe usarurl()->current()
Jeff Puckett

92

También puede usar Route::current()->getName()para verificar el nombre de su ruta.

Ejemplo: routes.php

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

Ver:

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

38
FYI, Route::is('testing')es lo mismo que Route::current()->getName() == 'testing'.
Hkan

@Hkan No, ambos son diferentes, Route::is('testing')- >> probar que no funcionará Route::is('test')- >> probar que funcionará, el Route::current()->getName() == 'testing'alias y la URL son diferentes
Naveen Singh raghuvanshi

1
@Naveen no, Route::is()comprueba el nombre de la ruta, no la ruta.
Hkan

1
también taquigrafíaRoute::currentRouteName()
Jeff Puckett

@Hkan Sí, pero eso no funcionaría al trabajar con parámetros en su URL, por ejemplo, tokens ...
Pathros

66

Tal vez deberías probar esto:

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

47

Lo haría de esta manera:

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

donde '/ view' es el nombre de la vista en routes.php.


¿Cómo saber si el directorio actual está en casa? Quiero decir, público. Ahh, lo tengo, yo sólo escribo=='public'
Patros

1
Si el directorio de inicio es '/' en route.php, simplemente escriba== '/')
Jucaman

¿Cómo lo haría funcionar también con los parámetros? No solo el nombre de la ruta.
Pathros

Puede concatenar parámetros de muchas maneras después del nombre de la ruta, dependiendo de cómo configuró sus rutas.
Jucaman

Lo hago así: Request::url()- de lo que obtienes la URL completa
Derk Jan Speelman

37

Para llegar current urlen bladevista que permite utilizar las siguientes,

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

Entonces, como puedes comparar usando el siguiente código,

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

2
Si necesita obtener la cadena de consulta en la hoja también, puede usar lo request()->getQueryString()que es muy útil junto con url()->current()eso, ya que deja la cadena de consulta.
Spencer O'Reilly

25

Esto me ayudó para la clase de navegación activa bootstrap en 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
Gracias, conocía el código pero Google me trajo aquí en 5 segundos jaja.

También esto funciona con laravel 4.2 y funciona bien. Gracias
Vipertecpro

También trabajando en Laravel 5.6, gracias ... esto me salvó de hacer navegaciones para cada vista: D
LaravDev

19

Un poco viejo pero esto funciona en L5:

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

Esto captura tanto / mycategory como / mycategory / slug


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

16

Laravel 5.4

Funciones globales

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

Esto no siempre funciona si se trata de una cadena de consulta como dominio.com/?page_id=1, dominio.com/?page_id=2, ya que esas URL también son iguales a "/"
Ryan S

Yo solíarequest()->routeIs('...')
Lachezar Todorov

15

Yo personalmente no intentaría agarrarlo dentro de la vista. No soy sorprendente en Laravel, pero imagino que necesitarías enviar tu ruta a un controlador, y luego dentro del controlador, pasar la variable (a través de una matriz) a tu vista, usando algo como $url = Request::url();.

Una forma de hacerlo de todos modos.

EDITAR: En realidad, mire el método anterior, probablemente una mejor manera.


11

Una barra de navegación simple con bootstrap se puede hacer como:

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

9

La forma más simple es usar: Request::url();

Pero aquí hay una forma compleja:

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

9

Hay dos maneras de hacerlo:

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

o

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

8

Deberías probar esto:

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

7

Establezca este código para que se aplique automáticamente para cada <li>+ que necesite usar la HTMLBuilderbiblioteca en su proyecto Laravel

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

7

Puede usar este código para obtener la URL actual:

echo url()->current();

echo url()->full();

Lo obtengo de los documentos de Laravel.


5

Otra forma de escribir if y else en Laravel usando path

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

Espero eso ayude


4

en lugar de utilizar la URL :: ruta () para verificar la ubicación actual de su ruta, es posible que desee considerar la Ruta :: nombreRuta actual (), por lo que en caso de que actualice su ruta, no necesita explorar todas sus páginas para actualizar el nombre del camino nuevamente.


4

Para rutas con nombre, yo uso:

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


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

Si bien este código puede responder la pregunta, proporcionar un contexto adicional con respecto a por qué y / o cómo responde la pregunta mejora su valor a largo plazo.
rollstuhlfahrer

2

Prueba esto:

@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

Gracias por este fragmento de código, que puede proporcionar una ayuda limitada e inmediata. Una explicación adecuada mejoraría en gran medida su valor a largo plazo al mostrar por qué esta es una buena solución al problema y lo haría más útil para futuros lectores con otras preguntas similares. Por favor, editar su respuesta a añadir un poco de explicación, incluyendo los supuestos realizados.
jhpratt GOFUNDME RELICENSING

1

Prueba esto:

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



1

La forma más simple es

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

Este colud captura los contactos /, contactos / crear, contactos / editar ...



-1

Intenta de esta manera:

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

Agregue alguna explicación a su respuesta
Pankaj Makwana
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.