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

269

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

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

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

user2443854
источник
любой ответ ниже помог с вашей проблемой?
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

Andreyco
источник
2
<li {{(Request :: is ('admin / dashboard')? '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()
Джефф Puckett
92

Вы также можете использовать, Route::current()->getName()чтобы проверить название вашего маршрута.

Пример: rout.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 Нет, оба отличаются, Route::is('testing')- >> тестирование не будет работать Route::is('test')- >> тестировать это будет работать Route::current()->getName() == 'testing'алиасы и URL разные
Naveen Singh raghuvanshi
1
@Naveen Нет, Route::is()проверяет имя маршрута, а не путь.
Hkan
1
также стенографияRoute::currentRouteName()
Джефф
@Hkan Да, но это не сработает при работе с параметрами в вашем URL, например с токенами ...
Pathros
66

Может быть, вы должны попробовать это:

<li class="{{ Request::is('admin/dashboard') ? 'active' : '' }}">Dashboard</li>
Дин Гайт
источник
47

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

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

где '/ view' - это имя вида в rout.php.

Jucaman
источник
Как определить, находится ли текущий каталог дома? Я имею в виду, публичный /. Ааа, я понял, я просто набрал=='public'
Pathros
1
Если в файле route.php home dir имеет значение «/», вы просто пишете== '/')
Jucaman
Как бы вы заставили его работать с параметрами? Не только название маршрута.
Патрос
Вы можете объединять параметры разными способами после имени маршрута, в зависимости от того, как вы настроили свои маршруты.
Jucaman
Я делаю это так: Request::url()- чем вы получаете полный URL
Дерк Ян Спилман
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>
Abduhafiz
источник
1
Спасибо, я знал код, но Google получил меня за 5 секунд, ха-ха.
Также это то же самое работает с Laravel 4.2, и это работает хорошо. Спасибо
Vipertecpro
Также работаю над Laravel 5.6, спасибо ... это только спасло меня от создания навигаций для каждого вида: D
LaravDev
19

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

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

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

VineFreeman
источник
1
Я использую{{ Request::is('clientes/*') ? 'active' : ''}}
Алекс Анджелико
16

Laravel 5.4

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

@if (request()->is('/'))
    <p>Is homepage</p>
@endif
обкрадывать
источник
Это не всегда работает, если вы имеете дело со строкой запроса, например, domain.com/?page_id=1, domain.com/?page_id=2, так как эти URL-адреса также равны "/"
Райан С
Я использовалrequest()->routeIs('...')
Лачезар Тодоров
15

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

Один из способов сделать это в любом случае.

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

кличка
источник
11

Простой navbar с начальной загрузкой может быть выполнен как:

    <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>
gines.nt
источник
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

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

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

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

Кришнамурты Ачарья
источник
4

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

Кеннет Сандей
источник
4

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

@if(url()->current() == route('routeName')) class="current" @endif
Алекс Пилявский
источник
4
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"
Мехран онлайн
источник
2
@if(request()->path()=='/path/another_path/*')
@endif
Элвин Дэвис Вадассери
источник
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, повышает его долгосрочную ценность.
Rollstuhlfahrer
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
C47
источник
Спасибо за этот фрагмент кода, который может предоставить некоторую ограниченную, немедленную помощь. Надлежащее объяснение было бы значительно улучшить свою долгосрочную ценность , показывая , почему это хорошее решение проблемы, и сделает его более полезным для читателей будущих с другими подобными вопросами. Пожалуйста, измените свой ответ, чтобы добавить некоторые объяснения, в том числе предположения, которые вы сделали.
18:30
1

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

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

Рафик Ислам
источник
1

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

 Request::url()
Равиндра Бхандери
источник
1

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

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

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

NaveenDA
источник
1

В файле Blade

@if (Request::is('companies'))
   Companies name 
@endif
Фаридул Хан
источник
-1

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

<a href="{{ URL::to('/registration') }}">registration </a>
parmod
источник
Добавьте пояснение к своему ответу
Панкадж Маквана