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?

user2443854
la source
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

Andreyco
la source
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
Naing Win
la source
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>
Dean Gite
la source
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.

Jucaman
la source
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
Sagar Naliyapara
la source
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>
Abduhafiz
la source
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

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

Laravel 5.4

Fonctions globales

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

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

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

Mais voici une manière complexe:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();
shasi kanth
la source
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>
gines.nt
la source
8

Vous devriez essayer ceci:

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

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

echo url()->current();

echo url()->full();

Je l'obtiens des documents de Laravel.

aydin abedinia
la source
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

Krishnamoorthy Acharya
la source
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.

Kenneth Sunday
la source
4

Pour les routes nommées, j'utilise:

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

Rafiqul Islam
la source
1

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

 Request::url()
Ravindra Bhanderi
la source
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 ...

NaveenDA
la source
1

Dans le fichier Blade

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

Essayez de cette façon:

<a href="{{ URL::to('/registration') }}">registration </a>
parmod
la source
Ajoutez quelques explications à votre réponse
Pankaj Makwana