Laravel 4で@ifステートメント(ブレード)内の現在のURLを取得する方法


269

Laravel 4を@if使用しています。Laravelのブレードテンプレートエンジンを使用して、ビューの条件内の現在のURLにアクセスしたいのですが、方法がわかりません。

私はそれが次のようなものを使用して実行できることを知っていますが<?php echo URL::current(); ?>@ifブレードステートメント内では不可能です。

助言がありますか?


以下の答えはあなたの問題を助けましたか?
N69S

回答:


358

次を使用できます。Request::url()現在のURLを取得するには、例を示します。

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

Laravelは、URLがパターンに一致するかどうかを調べる方法を提供します

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

さまざまなリクエスト情報を取得するには、関連ドキュメントを確認してください:http : //laravel.com/docs/requests#request-information


2
<li {{(Request :: is( 'admin / dashboard')? 'class = "active"': '')}}>これを試しましたが、失敗しました:x
TransformBinary

4
私の場合、私はそれが問題を解決するだろう削除、URLのために/開始を使用していた
ホアキン・L.ロブレス

@Andreycoホームページ以外のすべてのページにバナーを配置する必要がある場合は、これが機能しないので試してください@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
次のフォーマットを使用します:<li {!! (リクエスト:: url()== url( '/'))?'class = "active"': '' !!}}> {{some_code}}を使用した形式は文字列エンコーディングを使用するため。
Viktor

3
url() ビルダーインスタンスを返すようになりました。使用する必要がありますurl()->current()
Jeff Puckett 2017年

92

を使用Route::current()->getName()してルート名を確認することもできます。

例:routes.php

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

見る:

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

38
参考までRoute::is('testing')に、と同じRoute::current()->getName() == 'testing'です。
Hkan、2015年

@Hkanいいえ、どちらも異なりRoute::is('testing')ます->>テストは機能しません Route::is('test')->>テストは機能しますRoute::current()->getName() == 'testing'エイリアスとURLは異なります
Naveen Singh raghuvanshi

1
@Naveenいいえ、Route::is()パスではなくルート名をチェックします。
Hkan

1
略記Route::currentRouteName()
Jeff Puckett 2017年

@Hkanええ、でもトークンなどのURLのパラメーターを操作する場合は機能しません...
Pathros

66

多分あなたはこれを試すべきです:

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

47

私はこのようにします:

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

ここで、「/ view」はroutes.phpのビュー名です。


現在のディレクトリがホームかどうかを確認するにはどうすればよいですか?つまり、public /です。ああ、私はそれを得た、私はただタイプする=='public'
Pathros

1
route.phpでホームディレクトリが「/」の場合、次のように記述します== '/')
Jucaman

パラメータでどのように機能させるのですか?ルート名だけではありません。
パトロス

ルートの構成方法に応じて、ルート名の後にさまざまな方法でパラメーターを連結できます。
ジュカマン2017年

私は次のようにしていRequest::url()ます:-完全なURLを取得するよりも
Derk Jan Speelman

37

取得するcurrent urlにはblade次を使用することができますビュー、

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

次のコードを使用して比較できるように、

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

2
クエリ文字列をブレードでも取得する必要がある場合は、を使用できます。request()->getQueryString()これを使用すると、クエリ文字列が省略されるので、非常に便利url()->current()です。
スペンサーオライリー

25

これは、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
ありがとう、私はコードを知っていましたが、Googleは5秒でここに到着しました。

また、これはlaravel 4.2でも同じように機能し、問題なく機能しています。ありがとう
Vipertecpro

D:またLaravel 5.6、おかげで作業...これは単に各ビューのためのNAVを行うことから私を救った
LaravDev

19

少し古いですが、これはL5で機能します。

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

これは/ mycategoryと/ mycategory / slugの両方をキャプチャします


1
私が使用しています{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico

16

Laravel 5.4

グローバル機能

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

domain.com/?page_id=1、domain.com/?page_id=2のようなクエリ文字列を処理している場合、これらのURLも「/」と等しいため、これは常に機能するとは限りません
Ryan S

私が使用しましたrequest()->routeIs('...')
Lachezar Todorov

15

個人的には、ビューの内側でそれをつかむことはしません。私はLaravelで驚くべきことではありませんが、ルートをコントローラーに送信し、コントローラー内でのようなものを使用して(配列を介して)変数をビューに渡す必要があると思います$url = Request::url();

とにかくそれを行う一つの方法。

編集:実際には上記の方法を見てください、おそらくより良い方法です。


11

ブートストラップ付きの単純なナビゲーションバーは、次のように実行できます。

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

9

最も簡単な方法は以下を使用することです: Request::url();

しかし、ここに複雑な方法があります:

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

9

それには2つの方法があります。

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

または

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

8

あなたはこれを試す必要があります:

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

7

Laravelプロジェクトでライブラリ<li>を使用する必要がある場合に、このコードを自動的に適用するように設定します+HTMLBuilder

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



4

URL :: path()を使用して現在のパスの場所を確認する代わりに、Route :: currentRouteName()を検討することをお勧めします。パスを更新する場合に備えて、更新するためにすべてのページを探索する必要はありません。再びパス名。





2

これを試して:

@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

このコードスニペットをありがとうございます。このコードスニペットは、制限された即時のヘルプを提供する可能性があります。適切な説明が大幅に長期的な価値を向上させるだろう示すことによって、なぜこれが問題に良い解決策であり、他の、同様の質問を将来の読者にそれがより便利になるだろう。回答を編集して、仮定を含めて説明を追加してください。
jhpratt GOFUNDME RELICENSING '09 / 09/28



1

最も簡単な方法は

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

この列は、連絡先/、連絡先/作成、連絡先/編集をキャプチャします...



-1

この方法を試してください:

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

答えに説明を追加してください
Pankaj Makwana
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.