¿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.