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 {!! (Request :: url () == url ( '/'))? '{= "some_code}} 형식은 문자열 인코딩을 사용하므로'class ="active " ':' '!!}>.
빅토르

3
url() 이제 빌더 인스턴스를 리턴합니다 . 사용해야합니다url()->current()
Jeff Puckett

92

Route::current()->getName()경로 이름을 확인 하는 데 사용할 수도 있습니다 .

예 : route.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

@Hkan 둘 다 다르지 않습니다 Route::is('testing')->> 테스트가 작동하지 않습니다 Route::is('test')->> 테스트 Route::current()->getName() == 'testing'가명과 URL이 다릅니다
Naveen Singh raghuvanshi

1
@Naveen nope, Route::is()경로가 아닌 경로 이름을 확인합니다.
Hkan

1
또한 속기Route::currentRouteName()
Jeff Puckett

@Hkan 네,하지만 토큰과 같은 URL의 매개 변수로 작업 할 때는 작동하지 않습니다.
Pathros

66

아마도 당신은 이것을 시도해야합니다 :

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

47

나는 이렇게 할 것입니다 :

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

여기서 '/ view'는 route.php의 뷰 이름입니다.


현재 디렉토리가 집인지 확인하는 방법? 내 말은, 공개 /. Ahh, 알았어요, 그냥 입력=='public'
Pathros

1
route.php에서 홈 디렉토리가 '/'인 경우, 다음과 같이 작성하십시오== '/')
Jucaman

매개 변수로 어떻게 작동합니까? 경로 이름뿐만 아니라
Pathros

경로 구성 방법에 따라 경로 이름 뒤에 여러 가지 방법으로 매개 변수를 연결할 수 있습니다.
Jucaman

나는 다음과 같이한다 : Request::url()-당신이 완전한 URL을 얻는 것보다
Derk Jan Speelman 18:41에

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

Laravel 5.6에서도 작업하고 있습니다. 덕분에 각 뷰마다
탐색 기능을 만들지 못했습니다

19

조금 오래되었지만 이것은 L5에서 작동합니다.

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

이것은 / mycategory 및 / mycategory / slug를 모두 캡처합니다.


1
내가 사용하는{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico

16

라 라벨 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

이를 수행하는 두 가지 방법이 있습니다.

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

7

이 코드를 사용하여 현재 URL을 얻을 수 있습니다.

echo url()->current();

echo url()->full();

나는 Laravel 문서에서 이것을 얻습니다.


5

경로를 사용하여 라 라벨에서 if와 else를 쓰는 또 다른 방법

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

그것이 도움이되기를 바랍니다.


4

URL :: path () 를 사용하여 현재 경로 위치를 확인 하는 대신 경로 :: currentRouteName () 을 고려하여 경로 를 업데이트하는 경우 업데이트 할 모든 페이지를 탐색 할 필요가 없습니다. 다시 경로 이름.




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

이 코드는 질문에 대답 할 수 있지만,이 코드가 질문에 응답하는 이유 및 / 또는 방법에 대한 추가 컨텍스트를 제공하면 장기적인 가치가 향상됩니다.
rollstuhlfahrer

1

이 시도:

@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

0

이 시도:

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



0

가장 간단한 방법은

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

이 colud는 연락처 /, 연락처 / 만들기, 연락처 / 편집 ...



-1

이 방법으로 시도하십시오 :

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

귀하의 답변에 대한 설명을 추가하십시오
Pankaj Makwana
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.