Comment obtenir l'URL actuelle à l'intérieur de la déclaration @if (lame) dans Laravel 4?


269

J'utilise Laravel 4. Je voudrais accéder à l'URL actuelle à l'intérieur d'une @ifcondition dans une vue à l'aide du moteur de modèle de Laravel's Blade, mais je ne sais pas comment le faire.

Je sais que cela peut être fait en utilisant quelque chose comme <?php echo URL::current(); ?>mais ce n'est pas possible dans une @ifdéclaration de lame.

Aucune suggestion?


Est-ce qu'une réponse ci-dessous vous a aidé à résoudre votre problème?
N69S

Réponses:


358

Vous pouvez utiliser: Request::url()pour obtenir l'URL actuelle, voici un exemple:

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

Laravel propose une méthode pour savoir si l'URL correspond à un modèle ou non

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

Consultez la documentation associée pour obtenir différentes informations de demande: http://laravel.com/docs/requests#request-information


2
<li {{(Request :: is ('admin / dashboard')? 'class = "active"': '')}}> j'ai essayé, échoué: x
TransformBinary

4
Dans mon cas, j'utilisais un URL de départ / pour l'URL, le supprimer résoudrait le problème
Joaquín L. Robles

@Andreyco et si j'ai besoin de mettre une bannière sur toutes les pages sauf la page d'accueil, essayez cela ne fonctionne pas@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
J'utilise le format suivant pour cela: <li {!! (Request :: url () == url ('/'))? 'class = "active"': '' !!}>, car le format avec {{some_code}} utilise le codage de chaînes.
Viktor

3
url() renvoie maintenant une instance de générateur . doit utiliserurl()->current()
Jeff Puckett

92

Vous pouvez également utiliser Route::current()->getName()pour vérifier le nom de votre itinéraire.

Exemple: routes.php

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

Vue:

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

38
FYI, Route::is('testing')est le même que Route::current()->getName() == 'testing'.
Hkan

@Hkan Non, les deux sont différents, Route::is('testing')- >> tester cela ne fonctionnera pas Route::is('test')- >> tester cela fonctionnera Route::current()->getName() == 'testing'alias et url sont différents
Naveen Singh raghuvanshi

1
@Naveen nope, Route::is()vérifie le nom de l'itinéraire, pas le chemin.
Hkan

1
aussi sténographieRoute::currentRouteName()
Jeff Puckett

@Hkan Oui, mais cela ne fonctionnerait pas lorsque vous travaillez avec des paramètres dans votre URL, par exemple, des jetons ...
Pathros

66

Vous devriez peut-être essayer ceci:

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

47

Je le ferais de cette façon:

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

où '/ view' est le nom de la vue dans routes.php.


Comment savoir si le répertoire actuel est à la maison? Je veux dire, public /. Ahh, je l'ai, je tape juste=='public'
Pathros

1
Si home dir est '/' dans route.php, vous écrivez simplement== '/')
Jucaman

Comment feriez-vous pour que cela fonctionne également avec les paramètres? Pas seulement le nom de l'itinéraire.
Pathros

Vous pouvez concaténer les paramètres de plusieurs façons après le nom de l'itinéraire, selon la façon dont vous avez configuré vos itinéraires.
Jucaman

Je le fais comme ceci: Request::url()- que vous obtenez l'URL complète
Derk Jan Speelman

37

Pour obtenir current urlen bladevue , vous pouvez utiliser ci - dessous,

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

Donc, comme vous pouvez comparer en utilisant le code suivant,

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

2
Si vous devez également obtenir la chaîne de requête dans le panneau, vous pouvez utiliser request()->getQueryString()ce qui est très utile en conjonction avec url()->current()car cela laisse la chaîne de requête.
Spencer O'Reilly

25

Cela m'a aidé pour la classe de navigation active bootstrap dans 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
Merci, je connaissais le code mais Google m'a fait venir en 5 secondes haha.

De même, cela fonctionne avec laravel 4.2 et ça marche bien. Merci
Vipertecpro

Travailler également sur Laravel 5.6, merci ... cela m'a juste évité de faire des navs pour chaque vue: D
LaravDev

19

Un peu vieux mais cela fonctionne en L5:

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

Cela capture à la fois / mycategory et / mycategory / slug


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

16

Laravel 5.4

Fonctions globales

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

Cela ne fonctionne pas toujours si vous traitez avec une chaîne de requête comme domain.com/?page_id=1, domain.com/?page_id=2, car ces URL sont également égales à "/"
Ryan S

J'ai utilisérequest()->routeIs('...')
Lachezar Todorov

15

Personnellement, je n'essaierais pas de le saisir à l'intérieur de la vue. Je ne suis pas étonnant chez Laravel, mais j'imagine que vous auriez besoin d'envoyer votre itinéraire à un contrôleur, puis dans le contrôleur, de passer la variable (via un tableau) dans votre vue, en utilisant quelque chose comme $url = Request::url();.

Une façon de le faire de toute façon.

EDIT: Regardez en fait la méthode ci-dessus, probablement une meilleure façon.


11

Une simple barre de navigation avec bootstrap peut être réalisée comme suit:

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

9

La manière la plus simple est d'utiliser: Request::url();

Mais voici une manière complexe:

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

9

Il y a deux façons de procéder:

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

ou

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

8

Vous devriez essayer ceci:

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

7

Définissez ce code pour qu'il s'applique automatiquement pour chaque <li>+ dont vous avez besoin pour utiliser la HTMLBuilderbibliothèque dans votre projet Laravel

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

7

Vous pouvez utiliser ce code pour obtenir l'URL actuelle:

echo url()->current();

echo url()->full();

Je l'obtiens des documents de Laravel.


5

Une autre façon d'écrire if et else dans Laravel en utilisant path

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

J'espère que ça aide


4

au lieu d'utiliser l' URL :: path () pour vérifier l'emplacement actuel de votre chemin, vous voudrez peut-être considérer Route :: currentRouteName () donc juste au cas où vous mettre à jour votre chemin, vous n'avez pas besoin d'explorer toutes vos pages pour mettre à jour le nom du chemin d'accès à nouveau.


4

Pour les routes nommées, j'utilise:

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


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

Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire concernant pourquoi et / ou comment ce code répond à la question améliore sa valeur à long terme.
rollstuhlfahrer

2

Essaye ça:

@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

Merci pour cet extrait de code, qui pourrait fournir une aide limitée et immédiate. Une explication appropriée améliorerait considérablement sa valeur à long terme en montrant pourquoi c'est une bonne solution au problème, et la rendrait plus utile aux futurs lecteurs avec d'autres questions similaires. Veuillez modifier votre réponse pour ajouter des explications, y compris les hypothèses que vous avez faites.
jhpratt GOFUNDME RELICENSING

1

Essaye ça:

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


1

Il existe de nombreuses façons d'y parvenir, dont une que j'utilise toujours

 Request::url()

1

Le moyen le plus simple est

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

Ce colud capture les contacts /, contacts / créer, contacts / éditer ...


1

Dans le fichier Blade

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

-1

Essayez de cette façon:

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

Ajoutez quelques explications à votre réponse
Pankaj Makwana
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.