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?

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

Andreyco
sumber
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
Naing Menang
sumber
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>
Dean Gite
sumber
47

Saya akan melakukannya dengan cara ini:

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

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

Jucaman
sumber
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
Sagar Naliyapara
sumber
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>
Abduhafiz
sumber
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

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

Laravel 5.4

Fungsi global

@if (request()->is('/'))
    <p>Is homepage</p>
@endif
rampok
sumber
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.

Alias
sumber
11

Navbar sederhana dengan bootstrap dapat dilakukan sebagai:

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

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

Tapi ini cara yang rumit:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();
shasi kanth
sumber
9

Ada dua cara untuk melakukan itu:

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

atau

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

Anda harus mencoba ini:

<b class="{{ Request::is('admin/login') ? 'active' : '' }}">Login Account Details</b>
pardeep
sumber
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>
Ahmed Sayed Sk
sumber
7

Anda dapat menggunakan kode ini untuk mendapatkan URL saat ini:

echo url()->current();

echo url()->full();

Saya mendapatkan ini dari dokumen Laravel.

aydin abedinia
sumber
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

Krishnamoorthy Acharya
sumber
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.

Kenneth Sunday
sumber
4

Untuk rute yang ditentukan, saya menggunakan:

@if(url()->current() == route('routeName')) class="current" @endif
Alex Pilyavskiy
sumber
4
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"
mehran online
sumber
2
@if(request()->path()=='/path/another_path/*')
@endif
Alvin Davis Vadassery
sumber
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
C47
sumber
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>

Rafiqul Islam
sumber
1

Ada banyak cara untuk mencapainya, salah satunya saya gunakan selalu

 Request::url()
Ravindra Bhanderi
sumber
1

Cara paling sederhana adalah

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

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

NaveenDA
sumber
1

Dalam file Blade

@if (Request::is('companies'))
   Companies name 
@endif
Faridul Khan
sumber
-1

Coba dengan cara ini:

<a href="{{ URL::to('/registration') }}">registration </a>
parmod
sumber
Tambahkan beberapa penjelasan pada jawaban Anda
Pankaj Makwana