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

usuario2443854
fuente
¿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

Andreyco
fuente
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
Naing Win
fuente
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>
Dean Gite
fuente
47

Lo haría de esta manera:

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

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

Jucaman
fuente
¿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
Sagar Naliyapara
fuente
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>
Abduhafiz
fuente
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

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

Laravel 5.4

Funciones globales

@if (request()->is('/'))
    <p>Is homepage</p>
@endif
Robar
fuente
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.

Alias
fuente
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>
Alejandro Silva
fuente
9

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

Pero aquí hay una forma compleja:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();
shasi kanth
fuente
9

Hay dos maneras de hacerlo:

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

o

<li @if(Request::is('your_url'))class="active"@endif>
gines.nt
fuente
8

Deberías probar esto:

<b class="{{ Request::is('admin/login') ? 'active' : '' }}">Login Account Details</b>
pardeep
fuente
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>
Ahmed Sayed Sk
fuente
7

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

echo url()->current();

echo url()->full();

Lo obtengo de los documentos de Laravel.

aydin abedinia
fuente
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

Krishnamoorthy Acharya
fuente
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.

Domingo de Kenneth
fuente
4

Para rutas con nombre, yo uso:

@if(url()->current() == route('routeName')) class="current" @endif
Alex Pilyavskiy
fuente
4
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"
mehran en línea
fuente
2
@if(request()->path()=='/path/another_path/*')
@endif
Alvin Davis Vadassery
fuente
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
C47
fuente
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>

Rafiqul Islam
fuente
1

Hay muchas maneras de lograr, una de ellas la uso siempre

 Request::url()
Ravindra Bhanderi
fuente
1

La forma más simple es

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

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

NaveenDA
fuente
1

En archivo Blade

@if (Request::is('companies'))
   Companies name 
@endif
Faridul Khan
fuente
-1

Intenta de esta manera:

<a href="{{ URL::to('/registration') }}">registration </a>
Parmod
fuente
Agregue alguna explicación a su respuesta
Pankaj Makwana