2014-04-13 10 views
5

को संलग्न मेरी Laravel एप्लिकेशन में मैं एक साइडबार जहाँ मैं उपयोगकर्ता किसी राज्य या क्षेत्रLaravel वर्तमान URL पैरामीटर हो और नया URL अनुरोध

चयन मैं भी एक है यह बताने के लिए

/buy?state=NY or /buy?area=Queens तरह लिंक बनाया है फॉर्म जो उपयोगकर्ताओं को रेटिंग, शैली जैसी विभिन्न चीजों को फ़िल्टर करने देता है। जब मैं फ़िल्टर बटन पर क्लिक करें, यूआरएल की तरह

buy?min_year=1880&max_year=2019&min_rating=1&max_rating=10&genre=horror 

कुछ में परिवर्तन यह यूआरएल

से ?state=NY or ?area=Queens मैं चाहता हूँ चला जाता है के लिए मैं कार्रवाई फ़िल्टर करने के लिए वर्तमान URL पैरामीटर संलग्न करना में बदल स्ट्रिंग

मैं

$url = Request::path(); 

if (isset($_GET["state"]) && !empty($_GET['state'])) { 
$state = $_GET['state']; 
$url = $url . "&state=". $state; 

} 
if (isset($_GET["council"]) && !empty($_GET['council'])) { 
$council = $_GET['council']; 
$url = $url . "&council=". $council; 

} 
if (isset($_GET["area"]) && !empty($_GET['area'])) { 
$area = $_GET['area']; 
$url = $url . "&area=". $area; 

और फिर मेरी फिल्टर के रूप में की कोशिश की है

012,351,
{{ Form::open(array('url' => $url, 'class' => 'form-inline', 'method' => 'GET')) }} 

लेकिन इस परिणाम को इस स्ट्रिंग को वापस करने के रूप में परिणाम मिलता है।

/buystate=NY?min_year=1880&max_year=2019&min_rating=1&max_rating=10&genre=horror 

जब मैं चाहता हूँ

/buy?state=NY&min_year=1880&max_year=2019&min_rating=1&max_rating=10&genre=horror 
+0

लार्वा मार्ग रूट :: प्राप्त ('उपयोगकर्ता/{नाम}' के रूप में संग्रहीत किया जाता है, जिसमें पैरामीटर को चरम पर अलग करने के लिए "/" होता है, मेरे सेटअप में मैं पैरामीटर भेज रहा हूं "=" –

+0

क्यों नहीं ढांचे की विशेषताओं का उपयोग करके? आप '=' के साथ पैरा क्यों भेज रहे हैं? –

+0

क्योंकि/खरीद? राज्य/NY और min_year/1880 और max_year/2019 और min_rating/1 और max_rating/10 और शैली/डरावनी भ्रमित लग रहा है? –

उत्तर

1

यह Laravel 4.x के लिए ही है!

यदि मैं आपको अच्छी तरह से समझता हूं, तो आपको यही चाहिए।

laravel.com/docs/routing (! वास्तव में लायक पढ़ने)

डॉक्स से

(अपने वार्स के लिए अनुकूलित)

// Route::post(.... for forms) 
Route::get('buy/{state}/{min_year}/{and_so_on}', function($state, $min_year, $and_so_on) { 
    return array(
     'state' => $state, 
     'min_year' => $min_year, 
     'and_so_on' => $and_so_on 
    ); 
}); 

एचटीएमएल हिस्सा तो

की तरह कुछ होगा:

Laravel उत्कृष्ट रूटिंग विशेषताएं प्रदान करता है

<a href="buy/jersey/2012/and_so_on">Choose State</a>

तुम भी तो जैसे समूह मार्ग हो सकता है:

Route::group(array('prefix' => '/state'), function(){ 
    Route::get('/{min_year}'), function() {...}); 
    Route::get('/{and_so_on}'), function() {...}); 
}); 
+0

धन्यवाद! –

+0

क्या होगा यदि मुझे टी जैसे यूआरएल को संभालने की ज़रूरत है उसका: खरीद/{राज्य}? पृष्ठ = कुछ पृष्ठ? – meteor

+0

यह उत्तर देखें: http://stackoverflow.com/questions/25592826/basic-laravel-4-routing/25592890#25592890 –

3

यह आपकी समस्या का समाधान हो जाएगा, और मैं मानता हूँ कि हम ढांचे के सीमित हो नहीं करना पड़ेगा है।

public static function get_full_route() { 
    $split_url = explode('/', URL::full()); 
    $ret_url = []; 
    for($i = 0; $i < count($split_url); $i++) if(strlen($split_url[$i]) > 0) $ret_url[] = $split_url[$i]; 
    return array("protocol" => $ret_url[0], "domain" => $ret_url[1], "route" => $ret_url[2]); 
} 

वापसी

// In my case 
array(3) { 
    ["protocol"]=> string(5) "http:" 
    ["domain"]=> string(14) "localhost:8000" 
    ["route"]=> string(9) "login?a=1" 
} 
0

स्वीकार किए जाते हैं जवाब मुझे इतना यहाँ मदद नहीं की आधारित संदर्भ के लिए अपने उदाहरण पर अपने संस्करण है। नोट लार्वेल 5.2 के साथ यह प्रश्न में संकेत के अनुसार लार्वेल 4 नहीं है। ध्यान दें कि यह लारवेल 4 के साथ काम करेगा।

सबसे पहले पैरामीटर वर्तमान यूआरएल बनाते हैं।

$parameters = request()->input(); //return all GET parameters in an array. 

फिर आप जो चाहते हैं उसे जोड़ या संपादित करें।

$parameters['state'] = $state; //this will set or override the 'state' value. 

अपने इच्छित मार्ग पर सभी पैरामीटर पुश करें।

$url = route('search', $parameters); 

कोई भी पैरामीटर उस मार्ग यूआरएल में मेल नहीं खाते हैं url के अंत में जोड़ दिए जाते हैं।

हैप्पी डेज़। : डी