Làm cách nào để có được URL hiện tại bên trong Tuyên bố @if (Blade) trong Laravel 4?


269

Tôi đang sử dụng Laravel 4. Tôi muốn truy cập URL hiện tại trong một @if điều kiện trong chế độ xem bằng cách sử dụng công cụ tạo khuôn của Blade của Bladeavel nhưng tôi không biết làm thế nào để làm điều đó.

Tôi biết rằng nó có thể được thực hiện bằng cách sử dụng một cái gì đó giống như <?php echo URL::current(); ?>nhưng không thể có trong một @iftuyên bố lưỡi kiếm.

Bất kỳ đề xuất?


Có câu trả lời nào dưới đây giúp ích cho vấn đề của bạn không?
N69S

Câu trả lời:


358

Bạn có thể sử dụng: Request::url()để lấy URL hiện tại, đây là một ví dụ:

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

Laravel cung cấp một phương pháp để tìm hiểu xem URL có khớp với mẫu hay không

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

Kiểm tra các tài liệu liên quan để có được thông tin yêu cầu khác nhau: http://laravel.com/docs/requests#request-inif


2
<li {{(Yêu cầu :: là ('quản trị viên / bảng điều khiển')? 'class = "active"': '')}}> tôi đã thử điều này, thất bại: x
TransformBinary

4
Trong trường hợp của tôi, tôi đã sử dụng một URL bắt đầu / cho URL, loại bỏ nó sẽ giải quyết vấn đề
Joaquín L. Robles

@Andreyco nếu tôi cần đặt một biểu ngữ trên tất cả các trang trừ trang chủ hãy thử điều này không hoạt động@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
Tôi sử dụng định dạng tiếp theo cho nó: <li {!! (Yêu cầu :: url () == url ('/'))? 'class = "active"': '' !!}>, vì định dạng với {{some_code}} sử dụng mã hóa chuỗi.
Viktor


92

Bạn cũng có thể sử dụng Route::current()->getName()để kiểm tra tên tuyến đường của bạn.

Ví dụ: tuyến.php

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

Lượt xem:

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

38
FYI, Route::is('testing')cũng giống như Route::current()->getName() == 'testing'.
Hkan

@Hkan Không có cả hai đều khác nhau, Route::is('testing')- >> kiểm tra nó sẽ không hoạt động Route::is('test')- >> kiểm tra nó sẽ hoạt động Route::current()->getName() == 'testing'bí danh và url là khác nhau
Naveen Singh raghuvanshi

1
@Naveen không, Route::is()kiểm tra tên tuyến đường, không phải đường dẫn.
Hkan

1
cũng tốc kýRoute::currentRouteName()
Jeff Puckett

@Hkan Vâng, nhưng điều đó sẽ không hoạt động khi làm việc với các tham số trong URL của bạn, ví dụ: mã thông báo ...
Pathros

66

Có lẽ bạn nên thử điều này:

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

47

Tôi sẽ làm theo cách này:

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

trong đó '/ view' là tên xem trong tuyến.php.


Làm thế nào để biết nếu dir hiện tại là nhà? Ý tôi là, công khai /. À, tôi hiểu rồi, tôi chỉ cần gõ=='public'
Pathros

1
Nếu thư mục nhà là '/' trong route.php, bạn chỉ cần viết== '/')
Jucaman

Làm thế nào bạn sẽ làm cho nó hoạt động với các tham số là tốt? Không chỉ tên tuyến đường.
Pathros

Bạn có thể nối các tham số theo nhiều cách sau tên tuyến, tùy thuộc vào cách bạn định cấu hình các tuyến.
Jucaman

Tôi làm như thế này: Request::url()- hơn là bạn nhận được URL hoàn chỉnh
Derk Jan Speelman

37

Để có được current urltrong bladexem bạn có thể sử dụng sau,

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

Vì vậy, như bạn có thể so sánh bằng cách sử dụng mã sau đây,

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

2
Nếu bạn cũng cần phải có được chuỗi truy vấn trong lưỡi kiếm thì bạn có thể sử dụng request()->getQueryString()nó rất hữu ích khi kết hợp với url()->current()chuỗi truy vấn.
Spencer O'Reilly

25

Điều này đã giúp tôi cho lớp điều hướng hoạt động bootstrap trong 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
Cảm ơn bạn, tôi biết mã nhưng Google đã đưa tôi đến đây sau 5 giây haha.

Ngoài ra, điều này cũng hoạt động với laravel 4.2 và nó hoạt động tốt. Cảm ơn bạn
Vipertecpro

Cũng đang làm việc trên Laravel 5.6, cảm ơn ... điều này vừa giúp tôi tránh việc điều hướng cho mỗi lượt xem: D
LaravDev

19

Một chút cũ nhưng điều này hoạt động trong L5:

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

Cái này chụp cả / myc Category và / myc Category / slug


1
Tôi đang sử dụng{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico

16

Ấu trùng 5,4

Chức năng toàn cầu

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

Điều này không phải lúc nào cũng hoạt động nếu bạn đang xử lý chuỗi truy vấn như domain.com/?page_id=1, domain.com/?page_id=2, vì các URL đó cũng bằng "/"
Ryan S

Tôi đã sử dụngrequest()->routeIs('...')
Lachezar Todorov

15

Cá nhân tôi sẽ không thử lấy nó trong tầm nhìn. Tôi không ngạc nhiên ở Laravel, nhưng tôi sẽ tưởng tượng rằng bạn cần gửi tuyến đường của mình đến bộ điều khiển, và sau đó trong bộ điều khiển, chuyển biến (thông qua một mảng) vào chế độ xem của bạn, sử dụng một cái gì đó như $url = Request::url();.

Một cách để làm điều đó anyway.

EDIT: Thực sự nhìn vào phương pháp trên, có lẽ là một cách tốt hơn.


11

Một thanh điều hướng đơn giản với bootstrap có thể được thực hiện như sau:

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

9

Cách đơn giản nhất là sử dụng: Request::url();

Nhưng đây là một cách phức tạp:

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

9

Có hai cách để làm điều đó:

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

hoặc là

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

8

Bạn nên thử điều này:

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

7

Đặt mã này thành tự động áp dụng cho từng <li>+ bạn cần sử dụng HTMLBuilderthư viện trong dự án Laravel của mình

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

7

Bạn có thể sử dụng mã này để nhận URL hiện tại:

echo url()->current();

echo url()->full();

Tôi nhận được điều này từ các tài liệu của Laravel.


5

Một cách khác để viết nếu và cách khác trong Laravel sử dụng đường dẫn

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

Hy vọng nó giúp


4

thay vì sử dụng URL :: path () để kiểm tra vị trí đường dẫn hiện tại của bạn, bạn có thể muốn xem xét Route :: currentRouteName () để trong trường hợp bạn cập nhật đường dẫn của mình, bạn không cần phải khám phá tất cả các trang của mình để cập nhật tên đường dẫn một lần nữa.


4

Đối với các tuyến đường được đặt tên, tôi sử dụng:

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


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

Mặc dù mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về lý do và / hoặc cách mã này trả lời câu hỏi cải thiện giá trị lâu dài của nó.
rollstuhlfahrer

1

Thử cái này:

@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

Cảm ơn bạn vì đoạn mã này, có thể cung cấp một số trợ giúp hạn chế, ngay lập tức. Một lời giải thích phù hợp sẽ cải thiện đáng kể giá trị lâu dài của nó bằng cách chỉ ra lý do tại sao đây là một giải pháp tốt cho vấn đề và sẽ giúp nó hữu ích hơn cho những người đọc tương lai với những câu hỏi tương tự khác. Vui lòng chỉnh sửa câu trả lời của bạn để thêm một số giải thích, bao gồm các giả định bạn đã thực hiện.
jhpratt ĐÁNG TIN CẬY GOFUNDME


0

Có nhiều cách để đạt được, một trong số đó tôi luôn sử dụng

 Request::url()

0

Cách đơn giản nhất là

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

Colud này chụp các liên hệ /, danh bạ / tạo, danh bạ / chỉnh sửa ...



-1

Hãy thử cách này:

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

Thêm một số lời giải thích cho câu trả lời của bạn
Pankaj Makwana
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.