Laravel 4 में @if स्टेटमेंट (ब्लेड) के अंदर करंट URL कैसे प्राप्त करें?


269

मैं लारवेल 4 का उपयोग कर रहा हूं। मैं @ifलारवेल के ब्लेड टेंपलेटिंग इंजन का उपयोग करके एक दृश्य के अंदर वर्तमान URL तक पहुंचना चाहता हूं, लेकिन मुझे नहीं पता कि यह कैसे करना है।

मुझे पता है कि यह कुछ का उपयोग करके किया जा सकता है <?php echo URL::current(); ?>लेकिन यह एक @ifब्लेड स्टेटमेंट के अंदर संभव नहीं है ।

कोई सुझाव?


क्या आपके मुद्दे के साथ मदद का कोई जवाब नहीं है?
N69S

जवाबों:


358

आप इसका उपयोग कर सकते हैं: Request::url()वर्तमान URL प्राप्त करने के लिए, यहाँ एक उदाहरण है:

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

लारवेल यह पता लगाने के लिए एक विधि प्रदान करता है कि URL एक पैटर्न से मेल खाता है या नहीं

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

विभिन्न अनुरोधों की जानकारी प्राप्त करने के लिए संबंधित दस्तावेज की जांच करें: http://laravel.com/docs/requests#request-information


2
<li {{(अनुरोध :: है (/ व्यवस्थापक / डैशबोर्ड ’)?’ वर्ग = "सक्रिय" ':' ')}}}> मैंने यह कोशिश की, विफल रहा: x
ट्रांसफॉर्मिनल

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 = "सक्रिय" ":' '!!}>, क्योंकि प्रारूप {{some_code}} स्ट्रिंग एन्कोडिंग का उपयोग करता है।
विक्टर

3
url() अब एक बिल्डर उदाहरण देता है । का उपयोग करना चाहिएurl()->current()
जेफ पकेट

92

आप Route::current()->getName()अपने मार्ग का नाम जांचने के लिए भी उपयोग कर सकते हैं ।

उदाहरण: मार्गों

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'
हांक

@ हांक दोनों अलग नहीं हैं, Route::is('testing')- >> परीक्षण यह काम नहीं करेगा Route::is('test')- >> परीक्षण यह Route::current()->getName() == 'testing'उर्फ काम करेगा और url भिन्न हैं
नवीन सिंह रघुवंशी

1
@ नवीन नोप, Route::is()मार्ग के नाम की जाँच करता है, पथ का नहीं।
हांक

1
यह भी आशुलिपिRoute::currentRouteName()
जेफ Puckett

@ हाँ, हाँ, लेकिन वह काम नहीं करेगा जब आपके URL में मापदंडों के साथ काम करना, उदाहरण के लिए, टोकन ...
Pathros

66

शायद आपको यह कोशिश करनी चाहिए:

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

47

मैं इसे इस तरह से करूँगा:

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

जहाँ मार्गों में '/ view' दृश्य नाम है। php


कैसे बताएं कि क्या वर्तमान dir घर है? मेरा मतलब है, जनता /। आह, मैं समझ गया, मैं सिर्फ टाइप करता हूं=='public'
पाथ्रो

1
अगर घर की डीआर मार्ग में '/' है, तो आप बस लिखते हैं== '/')
जुकामन

आप इसे मापदंडों के साथ कैसे काम करेंगे? मार्ग का नाम ही नहीं।
पाथ्र्स

आप अपने मार्गों को कैसे कॉन्फ़िगर करते हैं, इस पर निर्भर करते हुए, आप मार्ग के नाम के बाद कई तरीकों से मापदंडों को संक्षिप्त कर सकते हैं।
जुकेमन

मैं इसे इस तरह से करता हूं: 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()क्वेरी स्ट्रिंग को छोड़ने के साथ संयोजन में बहुत सहायक है ।
स्पेंसर ओ'रिली

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>

1
धन्यवाद, मुझे कोड पता था लेकिन Google ने मुझे यहां 5 सेकंड में पा लिया।

यह भी लार्वा 4.2 के साथ काम कर रहा है और यह अच्छा काम कर रहा है। धन्यवाद
Vipertecpro

इसके अलावा, लारवेल 5.6 पर काम कर रहे हैं, धन्यवाद ... इसने मुझे प्रत्येक दृश्य के लिए
नौसेना

19

थोड़ा पुराना लेकिन यह L5 में काम करता है:

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

यह दोनों / mycategory और / mycategory / slug को दर्शाता है


1
मैं उपयोग कर रहा हूँ{{ Request::is('clientes/*') ? 'active' : ''}}
एलेक्स एंजेलिको

16

लारवेल 5.4

वैश्विक कार्य

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

यह हमेशा काम करता है अगर आप ऐसा तरह क्वेरी स्ट्रिंग के साथ हैं निपटने domain.com/?page_id=1, domain.com/?page_id=2 उन URL के रूप में भी "/" के बराबर के रूप में
रयान एस

मैंने इस्तेमाल कियाrequest()->routeIs('...')
लाचेज़र टोडोरोव

15

मैं व्यक्तिगत रूप से दृश्य के अंदर इसे हथियाने की कोशिश नहीं करूंगा। मैं लारवेल में अद्भुत नहीं हूं, लेकिन मुझे लगता है कि आपको अपने मार्ग को एक नियंत्रक को भेजने की आवश्यकता होगी, और फिर नियंत्रक के भीतर, चर (एक सरणी के माध्यम से) को अपने दृश्य में, कुछ का उपयोग करके पास करें $url = Request::url();

वैसे भी करने का एक तरीका।

संपादित करें: वास्तव में ऊपर की विधि को देखें, शायद बेहतर तरीका।


11

बूटस्ट्रैप के साथ एक सरल नेवबार निम्नानुसार किया जा सकता है:

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

8

आपको यह कोशिश करनी चाहिए:

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

7

प्रत्येक लार्वा परियोजना में लाइब्रेरी <li>का उपयोग करने के लिए आपको प्रत्येक के लिए स्वचालित रूप से लागू करने के लिए इस कोड को सेट करेंHTMLBuilder

<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();

मुझे यह लारवेल दस्तावेजों से मिलता है।


5

एक और तरीका है अगर और लारवेल में पथ का उपयोग कर लिखने के लिए

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

आशा करता हूँ की ये काम करेगा


4

अपने वर्तमान पथ स्थान की जाँच करने के लिए URL :: path () का उपयोग करने के बजाय , आप मार्ग पर विचार करना चाह सकते हैं :: currentRouteName () इसलिए यदि आप अपना पथ अद्यतन करते हैं, तो आपको अद्यतन करने के लिए अपने सभी पृष्ठों का पता लगाने की आवश्यकता नहीं है पथ का नाम फिर से।




2
@if(request()->path()=='/path/another_path/*')
@endif

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन यह कोड क्यों और / या इस प्रश्न के उत्तर के बारे में अतिरिक्त संदर्भ प्रदान करता है, इसके दीर्घकालिक मूल्य में सुधार करता है।
रोलस्टूफ़्लोरहेयर

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

इस कोड स्निपेट के लिए धन्यवाद, जो कुछ सीमित, तत्काल सहायता प्रदान कर सकता है। एक उचित व्याख्या यह दर्शाती है कि यह समस्या का एक अच्छा समाधान क्यों है, यह दिखा कर इसके दीर्घकालिक मूल्य में बहुत सुधार होगा , और यह भविष्य के पाठकों को अन्य, समान प्रश्नों के साथ और अधिक उपयोगी बना देगा। कृपया कुछ स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें, जिसमें आपके द्वारा की गई धारणाएँ शामिल हैं।
झपट्टा GOFUNDME विश्वसनीय



0

सबसे सरल तरीका है

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

यह कॉलुड संपर्क /, संपर्क / निर्माण, संपर्क / संपादन पर कब्जा करता है ...



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.