วิธีรับ URL ปัจจุบันภายในคำชี้แจง @if (เบลด) ใน Laravel 4


269

ฉันใช้ Laravel 4 ฉันต้องการเข้าถึง URL ปัจจุบัน@ifภายใต้เงื่อนไขในมุมมองโดยใช้เอ็นจิ้น templating Blade ของ Laravel แต่ฉันไม่รู้ว่าจะทำอย่างไร

ฉันรู้ว่ามันสามารถทำได้โดยใช้สิ่งที่ชอบ<?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 {{(คำขอ :: is ('ผู้ดูแลระบบ / แดชบอร์ด')? 'class = "active"': '')}}> ฉันลองทำแล้วล้มเหลว: x
TransformBinary

4
ในกรณีของฉันฉันใช้การเริ่มต้น / สำหรับ URL การลบมันจะแก้ปัญหาได้
Joaquín L. Robles

@Andreyco จะทำอย่างไรถ้าฉันต้องวางแบนเนอร์ในทุกหน้ายกเว้นหน้าแรกลองใช้งานไม่ได้@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
ฉันใช้รูปแบบถัดไป: <li {!! (คำขอ :: url () == url ('/'))? 'class = "active"': '' !!}> เนื่องจากรูปแบบที่มี {{some_code}} ใช้การเข้ารหัสสตริง
Viktor

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
FYI, เป็นเช่นเดียวกับ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 ไม่Route::is()ตรวจสอบชื่อเส้นทางไม่ใช่เส้นทาง
Hkan

1
จดชวเลขRoute::currentRouteName()
Jeff Puckett

@Hkan Yeah แต่นั่นจะไม่ทำงานเมื่อทำงานกับพารามิเตอร์ใน URL ของคุณตัวอย่างเช่นโทเค็น ...
Pathros


47

ฉันจะทำแบบนี้:

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

โดยที่ '/ view' คือชื่อมุมมองใน route.php


จะบอกได้อย่างไรว่าผบ. ปัจจุบันอยู่บ้าน? ฉันหมายถึงสาธารณะ / อ่าฉันเข้าใจแล้วฉันเพิ่งพิมพ์=='public'
Pathros

1
หาก home dir คือ '/' ใน route.php คุณเพียงแค่เขียน== '/')
Jucaman

คุณจะทำให้มันทำงานกับพารามิเตอร์ได้อย่างไร ไม่เพียง แต่ชื่อเส้นทาง
Pathros

คุณสามารถต่อพารามิเตอร์เข้าด้วยกันได้หลายวิธีหลังจากชื่อเส้นทางทั้งนี้ขึ้นอยู่กับการกำหนดค่าเส้นทางของคุณ
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()นั้นทิ้งสตริงการสืบค้น
Spencer O'Reilly

25

สิ่งนี้ช่วยฉันในการเรียน bootstrap active nav ใน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 ขอบคุณ ... นี่เพียงช่วยฉันจากการทำ navs สำหรับแต่ละมุมมอง: 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('...')
Lachezar Todorov

15

โดยส่วนตัวแล้วฉันจะไม่พยายามคว้ามันไว้ในมุมมอง ฉันไม่น่าตื่นตาตื่นใจที่ Laravel แต่ผมจะคิดว่าคุณจะต้องส่งเส้นทางของคุณไปยังตัวควบคุมและจากนั้นภายในการควบคุมผ่านตัวแปร (ผ่านอาร์เรย์) $url = Request::url();ในมุมมองของคุณโดยใช้สิ่งที่ต้องการ

วิธีหนึ่งในการทำมันต่อไป

แก้ไข: จริงดูวิธีข้างต้นอาจเป็นวิธีที่ดีกว่า


11

navbar ง่าย ๆ พร้อม bootstrap สามารถทำได้ดังนี้:

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


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 โดยใช้ path

 <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

มีหลายวิธีที่จะประสบความสำเร็จหนึ่งในนั้นคือฉันใช้อยู่เสมอ

 Request::url()

0

วิธีที่ง่ายที่สุดคือ

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

Colud นี้จับผู้ติดต่อ /, ผู้ติดต่อ / สร้าง, ผู้ติดต่อ / แก้ไข ...



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.