Як отримати поточну URL-адресу Inside @if Statement (Blade) у Laravel 4?


269

Я використовую Laravel 4. Я хотів би отримати доступ до поточної URL-адреси всередині @ifумови у вигляді, використовуючи механізм шаблонів Blade Blade, але я не знаю, як це зробити.

Я знаю, що це можна зробити за допомогою чогось подібного, <?php echo URL::current(); ?>але всередині оператора @ifblade це неможливо .

Будь-які пропозиції?


чи допомогла будь-яка відповідь нижче щодо вашої проблеми?
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 {{(Запит :: є ('адміністратор / інформаційна панель')? 'class = "active"': '')}}> я спробував це, не вдалося: x
TransformBinary

4
У моєму випадку я використовував стартовий / для URL-адреси, його видалення вирішило б проблему
Хоакін Л. Роблесс

@Andreyco що робити, якщо мені потрібно поставити банер на всі сторінки, крім домашньої сторінки, спробуйте це не працює@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Юсеф Алтаф

4
Я використовую наступний формат для нього: <li {!! (Запит: url () == url ('/'))? 'class = "active"': '' !!}>, тому що у форматі {{some_code}} використовується рядкове кодування.
Віктор

3
url() тепер повертає екземпляр будівельника . обов'язково використовуватиurl()->current()
Джефф Пукетт

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
FYI, Route::is('testing')те саме, що Route::current()->getName() == 'testing'.
Хкан

@Hkan Ні обидва не відрізняються, Route::is('testing')- >> тестування не буде працювати Route::is('test')- >> тестуйте, що він буде працювати Route::current()->getName() == 'testing'псевдонімом, а URL-адреса є різною
Naveen Singh raghuvanshi

1
@Naveen nope, Route::is()перевіряє назву маршруту, а не шлях.
Хкан

1
також стенограмаRoute::currentRouteName()
Джефф Пукетт

@Hkan Так, але це не спрацює при роботі з параметрами у вашій URL-адресі, наприклад, лексеми ...
Pathros

66

Можливо, вам варто спробувати це:

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

47

Я зробив би це так:

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

де '/ view' - ім'я перегляду у route.php.


Як сказати, чи є зараз діючий директор? Я маю на увазі, публічний /. Ах, я це зрозумів, я просто =='public'
набираю

1
Якщо домашній dir є "/" у route.php, ви просто пишете== '/')
Jucaman

Як би ви змусили це працювати і з параметрами? Не тільки назва маршруту.
Патрос

Ви можете об'єднати параметри різними способами після назви маршруту, залежно від способу налаштування маршрутів.
Jucaman

Я роблю це так: 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

Мені це допомагає для активного навчального класу bootstrap в 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, дякую ... це просто врятувало мене від створення навичок для кожного перегляду: D
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('...')
Лачезар Тодоров

15

Я особисто не намагався б схопити його всередині зору. Я не дивуюсь у Laravel, але я думаю, що вам потрібно буде надіслати свій маршрут контролеру, а потім всередині контролера передати змінну (через масив) у ваш погляд, використовуючи щось подібне $url = Request::url();.

Один із способів зробити це все одно.

EDIT: Насправді дивіться на метод вище, можливо, кращий спосіб.


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

Встановіть код, який застосовується автоматично для кожного <li>+, що потрібно використовувати HTMLBuilderбібліотеку у вашому проекті Laravel

<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

Ще один спосіб записати, якщо і ще в Laravel, використовуючи path

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

Сподіваюся, це допомагає


4

замість того, щоб використовувати URL :: path () для перевірки вашого поточного місця розташування, ви можете розглянути Route :: 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('contacts/*') ? 'active' : '' }}">Dashboard</li>

Ця команда охоплює контакти /, контакти / створювати, контакти / редагувати ...



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.