Bagaimana Mendapatkan URL Saat Ini Di Dalam Pernyataan (Blade) di Laravel 4?


269

Saya menggunakan Laravel 4. Saya ingin mengakses URL saat ini di dalam suatu @ifkondisi dalam tampilan menggunakan mesin templating Blade Laravel tetapi saya tidak tahu bagaimana cara melakukannya.

Saya tahu itu bisa dilakukan menggunakan sesuatu seperti <?php echo URL::current(); ?>tetapi itu tidak mungkin di dalam @ifpernyataan blade.

Ada saran?


apakah ada jawaban di bawah ini yang membantu masalah Anda?
N69S

Jawaban:


358

Anda dapat menggunakan: Request::url()untuk mendapatkan URL saat ini, berikut adalah contohnya:

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

Laravel menawarkan metode untuk mencari tahu, apakah URL cocok dengan suatu pola atau tidak

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

Periksa dokumentasi terkait untuk mendapatkan informasi permintaan yang berbeda: http://laravel.com/docs/requests#request-information


2
<li {{(Permintaan :: is ('admin / dashboard')? 'class = "active"': '')}}> saya mencoba ini, gagal: x
TransformBinary

4
Dalam kasus saya, saya menggunakan awal / untuk URL, menghapusnya akan menyelesaikan masalah
Joaquín L. Robles

@Andreyco bagaimana jika saya perlu meletakkan spanduk di semua halaman kecuali halaman rumah coba ini tidak berfungsi@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
Saya menggunakan format selanjutnya untuk itu: <li {!! (Permintaan :: url () == url ('/'))? 'class = "active"': '' !!}>, karena format dengan {{some_code}} menggunakan pengkodean string.
Viktor

3
url() sekarang mengembalikan instance builder . harus menggunakanurl()->current()
Jeff Puckett

92

Anda juga dapat menggunakan Route::current()->getName()untuk memeriksa nama rute Anda.

Contoh: routes.php

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

Melihat:

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

38
FYI, Route::is('testing')sama dengan Route::current()->getName() == 'testing'.
Hkan

@Hkan Tidak keduanya berbeda, Route::is('testing')- >> mengujinya tidak akan berhasil Route::is('test')- >> mengujinya akan berfungsi Route::current()->getName() == 'testing'alias dan url berbeda
Naveen Singh raghuvanshi

1
@Naveen nggak, Route::is()memeriksa nama rute, bukan jalan.
Hkan

1
juga singkatanRoute::currentRouteName()
Jeff Puckett

@Hkan Ya, tapi itu tidak akan berfungsi ketika bekerja dengan parameter di URL Anda, misalnya, token ...
Pathros

66

Mungkin Anda harus mencoba ini:

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

47

Saya akan melakukannya dengan cara ini:

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

di mana '/ view' adalah nama tampilan di routes.php.


Bagaimana cara mengetahui apakah dir saat ini adalah rumah? Maksud saya, publik /. Ahh, saya mengerti, saya cukup mengetik=='public'
Pathros

1
Jika dir home adalah '/' di route.php, Anda cukup menulis== '/')
Jucaman

Bagaimana Anda membuatnya bekerja dengan parameter juga? Bukan hanya nama rutenya.
Pathros

Anda dapat menggabungkan parameter dalam banyak cara setelah nama rute, tergantung pada bagaimana Anda mengkonfigurasi rute Anda.
Jucaman

Saya melakukannya seperti ini: Request::url()- daripada Anda mendapatkan URL lengkap
Derk Jan Speelman

37

Untuk mendapatkan current urldi bladetampilan Anda dapat menggunakan berikut,

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

Sehingga Anda dapat membandingkan menggunakan kode berikut,

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

2
Jika Anda perlu mendapatkan string kueri di blade juga maka Anda dapat menggunakan request()->getQueryString()yang sangat membantu dalam hubungannya dengan url()->current()yang meninggalkan string kueri.
Spencer O'Reilly

25

Ini membantu saya untuk kelas nav bootstrap aktif di 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
Terima kasih, saya tahu kodenya tetapi Google membawa saya ke sini dalam 5 detik haha.

Ini juga bekerja dengan laravel 4.2 dan bekerja dengan baik. Terima kasih
Vipertecpro

Juga bekerja pada Laravel 5.6, terima kasih ... ini baru saja menyelamatkan saya dari membuat navs untuk setiap tampilan: D
LaravDev

19

Sedikit tua tapi ini berfungsi di L5:

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

Ini menangkap / mycategory dan / mycategory / slug


1
Saya menggunakan{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico

16

Laravel 5.4

Fungsi global

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

Ini tidak selalu berfungsi jika Anda berurusan dengan string kueri seperti begitu domain.com/?page_id=1, domain.com/?page_id=2, karena URL itu juga sama dengan "/"
Ryan S

Saya menggunakanrequest()->routeIs('...')
Lachezar Todorov

15

Saya pribadi tidak akan mencoba meraihnya di dalam tampilan. Saya tidak luar biasa di Laravel, tapi saya akan membayangkan Anda harus mengirim rute Anda ke controller, dan kemudian di dalam controller, meneruskan variabel (melalui array) ke tampilan Anda, menggunakan sesuatu seperti $url = Request::url();.

Salah satu cara melakukannya.

EDIT: Sebenarnya lihat metode di atas, mungkin cara yang lebih baik.


11

Navbar sederhana dengan bootstrap dapat dilakukan sebagai:

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

9

Cara paling sederhana adalah dengan menggunakan: Request::url();

Tapi ini cara yang rumit:

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

9

Ada dua cara untuk melakukan itu:

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

atau

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

8

Anda harus mencoba ini:

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

7

Setel kode ini untuk diterapkan secara otomatis untuk setiap <li>+ yang Anda perlukan menggunakan HTMLBuilderpustaka di proyek Laravel Anda

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

7

Anda dapat menggunakan kode ini untuk mendapatkan URL saat ini:

echo url()->current();

echo url()->full();

Saya mendapatkan ini dari dokumen Laravel.


5

Cara lain untuk menulis jika dan lainnya di Laravel menggunakan path

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

Semoga ini bisa membantu


4

alih-alih menggunakan URL :: path () untuk memeriksa lokasi jalur Anda saat ini, Anda mungkin ingin mempertimbangkan Rute :: currentRouteName () jadi jika Anda memperbarui jalur Anda, Anda tidak perlu menjelajahi semua halaman Anda untuk memperbarui nama jalur lagi.


4

Untuk rute yang ditentukan, saya menggunakan:

@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

Sementara kode ini dapat menjawab pertanyaan, memberikan konteks tambahan tentang mengapa dan / atau bagaimana kode ini menjawab pertanyaan meningkatkan nilai jangka panjangnya.
rollstuhlfahrer

2

Coba ini:

@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

Terima kasih atas cuplikan kode ini, yang mungkin memberikan bantuan terbatas dan segera. Sebuah penjelasan yang tepat akan sangat meningkatkan nilai jangka panjang dengan menunjukkan mengapa ini adalah solusi yang baik untuk masalah ini, dan akan membuatnya lebih bermanfaat untuk pembaca masa depan dengan lainnya, pertanyaan-pertanyaan serupa. Harap edit jawaban Anda untuk menambahkan beberapa penjelasan, termasuk asumsi yang Anda buat.
jhpratt GOFUNDME RELICENSING

1

Coba ini:

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



1

Cara paling sederhana adalah

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

Colud ini menangkap kontak /, kontak / buat, kontak / edit ...



-1

Coba dengan cara ini:

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

Tambahkan beberapa penjelasan pada jawaban Anda
Pankaj Makwana
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.