Как получить текущий URL-адрес внутри оператора @if (Blade) в Laravel 4?

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

Я знаю, что это можно сделать, используя что-то вроде <?php echo URL::current(); ?>, но это невозможно внутри оператора @if blade.

Какие-либо предложения?


person user2443854    schedule 11.07.2013    source источник
comment
помогли ли приведенные ниже ответы с вашей проблемой?   -  person N69S    schedule 20.02.2020


Ответы (28)


Вы можете использовать: 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

person Andreyco    schedule 11.07.2013
comment
‹Li {{(Request :: is ('admin / dashboard')? 'Class = active': '')}}› Я пробовал это, не удалось: x - person TransformBinary; 05.01.2014
comment
В моем случае я использовал начальный / для URL-адреса, его удаление решило бы проблему. - person Joaquín L. Robles; 05.01.2015
comment
@Andreyco, а что, если мне нужно разместить баннер на всех страницах, кроме домашней, попробуйте, это не сработает @if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif - person Yousef Altaf; 11.06.2016
comment
Я использую для этого следующий формат: ‹li {!! (Запрос :: url () == url ('/'))? 'class = active': '' !!} ›, потому что формат с {{some_code}} использует строковую кодировку. - person Viktor; 08.10.2016
comment
url() теперь возвращает экземпляр построителя. должен использовать url()->current() - person Jeff Puckett; 14.03.2017
comment
@JeffPuckettII Не могли бы вы предоставить версию Laravel, с которой связано это изменение? Я добавлю примечание об этом, чтобы ответить. TY. - person Andreyco; 15.03.2017
comment
Я не уверен, когда это началось, но ссылка, которую я предоставил, относится к текущей версии 5.4. - person Jeff Puckett; 15.03.2017
comment
Хотя я поддержал это давным-давно, сегодня у меня возникли проблемы с этим на Laravel 5.7, и в конечном итоге вместо этого заработал: @if (Request::path() != 'login'). Обратите внимание на отсутствие косой черты перед входом в систему. - person Ryan; 19.02.2019

Вы также можете использовать 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
person Naing Win    schedule 08.01.2015
comment
К вашему сведению, Route::is('testing') совпадает с Route::current()->getName() == 'testing'. - person Hkan; 21.05.2015
comment
@Hkan Нет, оба разные, Route::is('testing') - ›› тестирование не сработает Route::is('test') - ›› тестирование работает Route::current()->getName() == 'testing' псевдоним и URL разные - person Naveen Singh raghuvanshi; 09.04.2016
comment
@Naveen нет, Route::is() проверяет имя маршрута, а не путь. - person Hkan; 09.04.2016
comment
также сокращение Route::currentRouteName() - person Jeff Puckett; 14.03.2017
comment
@Hkan Да, но это не сработает при работе с параметрами в вашем URL, например, токенами ... - person Pathros; 20.08.2018
comment
@Pathros вы можете использовать подстановочные знаки, такие как Route::is('foo.*) или даже Route::is('foo*'). - person Hkan; 20.08.2018

Может, вам стоит попробовать это:

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

Я бы сделал так:

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

где '/ view' - имя представления в routes.php.

person Jucaman    schedule 31.07.2014
comment
Как узнать, находится ли текущий каталог дома? Я имею ввиду публичный /. Ах, я понял, я просто набираю =='public' - person Pathros; 05.02.2015
comment
Если домашний каталог - '/' в route.php, вы просто пишете == '/') - person Jucaman; 17.02.2015
comment
Как бы вы заставили его работать с параметрами? Не только название маршрута. - person Pathros; 17.02.2017
comment
Вы можете объединить параметры разными способами после имени маршрута, в зависимости от того, как вы настроили свои маршруты. - person Jucaman; 23.03.2017
comment
Я делаю это так: Request::url() - тогда вы получаете полный URL - person Derk Jan Speelman; 15.01.2018

Чтобы получить current url в blade представлении, вы можете использовать следующее:

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

Чтобы сравнить, используя следующий код,

@if (url()->current() == 'you url')
    //stuff you want to perform
@endif
person Sagar Naliyapara    schedule 24.04.2017
comment
Если вам также нужно получить строку запроса в лезвии, вы можете использовать request()->getQueryString(), что очень полезно в сочетании с url()->current(), поскольку это оставляет строку запроса. - person Spencer O'Reilly; 12.05.2017
comment
`` `@if (url () -› current () == '/ admin / search-result' '`` Я использовал этот код, но он не работает? - person Mahdi Safari; 15.08.2020
comment
@MahdiSafari, в таком случае просто напишите @if(Request::is('admin/search-result')) - person Sagar Naliyapara; 19.08.2020

Это помогло мне для начальной загрузки активного класса навигации в 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>
person Abduhafiz    schedule 28.07.2016
comment
Спасибо, я знал код, но Google доставил меня сюда за 5 секунд, ха-ха. - person ; 13.04.2017
comment
Также это работает с laravel 4.2, и он работает хорошо. Спасибо - person Vipertecpro; 19.02.2018
comment
Также работаю над Laravel 5.6, спасибо ... это просто спасло меня от создания навигации для каждого представления: D - person LaravDev; 03.06.2018

Немного старовато, но это работает в L5:

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

Это захватывает как / mycategory, так и / mycategory / slug

person VineFreeman    schedule 17.03.2016
comment
Я использую {{ Request::is('clientes/*') ? 'active' : ''}} - person Alex Angelico; 01.06.2020

Laravel 5.4

Глобальные функции

@if (request()->is('/'))
    <p>Is homepage</p>
@endif
person Rob    schedule 05.05.2017
comment
Это не всегда работает, если вы имеете дело со строкой запроса, например domain.com/?page_id=1, domain.com/?page_id=2, поскольку эти URL-адреса также равны / - person Ryan S; 16.07.2017
comment
Я использовал request()->routeIs('...') - person Lachezar Todorov; 27.01.2020

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

Как бы то ни было, один способ сделать это.

РЕДАКТИРОВАТЬ: На самом деле посмотрите на метод выше, возможно, лучший способ.

person Alias    schedule 11.07.2013

Вы можете использовать этот код для получения текущего URL:

echo url()->current();

echo url()->full();

Я получил это из документов Laravel.

person aydin abedinia    schedule 16.12.2018

Простую навигационную панель с начальной загрузкой можно сделать так:

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

Самый простой способ - использовать: Request::url();

Но вот сложный способ:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();
person shasi kanth    schedule 14.07.2015

Это можно сделать двумя способами:

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

or

<li @if(Request::is('your_url'))class="active"@endif>
person gines.nt    schedule 07.01.2016

Вы должны попробовать это:

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

Вы получите url, используя приведенный ниже код.

Например, ваш URL-адрес типа https//www.example.com/testurl?test

echo url()->current();
Result : https//www.example.com/testurl

echo url()->full();
Result: https//www.example.com/testurl?test
person Siva    schedule 05.08.2020

Установите этот код на автоматическое применение для каждого <li> +, необходимого для использования библиотеки HTMLBuilder в вашем проекте Laravel.

<script type="text/javascript">
    $(document).ready(function(){
        $('.list-group a[href="/{{Request::path()}}"]').addClass('active');
    });
</script>
person Ahmed Sayed Sk    schedule 18.11.2016

Для именованных маршрутов я использую:

@if(url()->current() == route('routeName')) class="current" @endif
person Alex Pilyavskiy    schedule 07.02.2019

Самый простой способ

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

Этот colud захватывает контакты /, контакты / создание, контакты / редактирование ...

person Naveen DA    schedule 23.06.2019

Другой способ написать if и else в Laravel, используя путь

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

Надеюсь, это поможет

person Krishnamoorthy Acharya    schedule 05.09.2017

вместо использования URL :: path () для проверки текущего местоположения пути вы можете рассмотреть возможность использования Route :: currentRouteName (), чтобы на всякий случай обновить свой path, вам не нужно исследовать все свои страницы, чтобы снова обновить имя пути.

person Kenneth Sunday    schedule 30.11.2017

В файле Blade

@if (Request::is('companies'))
   Companies name 
@endif
person Faridul Khan    schedule 12.10.2019

Для меня это лучше всего работает:

class="{{url()->current() == route('dashboard') ? 'bg-gray-900 text-white' : 'text-gray-300'}}"
person Slowwie    schedule 01.08.2020

Попробуй это:

@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
person C47    schedule 28.09.2018
comment
Спасибо за этот фрагмент кода, который может оказать некоторую немедленную помощь. правильное объяснение значительно улучшило бы его долгосрочную ценность, показав почему это хорошее решение. к проблеме и сделает ее более полезной для будущих читателей с помощью других похожих вопросов. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения, включая сделанные вами предположения. - person jhpratt; 28.09.2018

Попробуй это:

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

person Rafiqul Islam    schedule 25.03.2018

Есть много способов достичь, один из них я использую всегда

 Request::url()
person Ravindra Bhanderi    schedule 07.03.2018

Попробуйте так:

<a href="{{ URL::to('/registration') }}">registration </a>
person parmod    schedule 12.04.2018
comment
Добавьте пояснение к своему ответу - person Pankaj Makwana; 12.04.2018

Для Laravel 5.5 +

<a class="{{ Request::segment(1) == 'activities'  ? 'is-active' : ''}}" href="#">
                              <span class="icon">
                                <i class="fas fa-list-ol"></i>
                              </span>
                            Activities
                        </a>
person JDamour    schedule 25.03.2021

person    schedule
comment
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. - person rollstuhlfahrer; 22.02.2018