2014-04-13 14 views
5

Nel mio laravel app ho creato una barra laterale dove ho link comelaravel ottenere i parametri di URL corrente e aggiungere alla nuova richiesta URL

/buy?state=NY or /buy?area=Queens per permettere all'utente di selezionare uno Stato o area

Ho anche un modulo che consente agli utenti di filtrare varie cose come valutazione, genere. Quando clicco sul pulsante Filtro, l'URL cambia a qualcosa come

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

cade il ?state=NY or ?area=Queens dall'URL

voglio cambio nell'azione per aggiungere i parametri URL corrente al filtro stringa

ho cercato

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

E poi nella mia forma di filtro

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

ma questo restituisce il modulo restituendo questa stringa.

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

quando voglio

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

I percorsi laravel vengono memorizzati come Route :: get ('utente/{nome}', con un "/" che separa il parametro dalla variabile, nel mio setup sto inviando i parametri con "=" –

+0

Perché no utilizzando le caratteristiche del framework? Perché stai inviando parametri con '='? –

+0

perché/buy? state/NY & min_year/1880 e max_year/2019 e min_rating/1 & max_rating/10 & genere/horror sembra confuso? –

risposta

1

Questo è per laravel solo 4.x!

Se ti capisco bene, questo è quello che ti serve.

laravel offre eccellenti funzionalità di routing:

laravel.com/docs/routing (! Davvero la pena di leggere)

Dalla documentazione (adattato alle vostre Vars)

// 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 
    ); 
}); 

La parte HTML sarebbe allora qualcosa come

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

Si può anche percorsi di gruppo in questo modo:

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

grazie per l'aiuto! –

+0

e se ho bisogno di gestire URL come t il suo: buy/{state}? page = somepage? – meteor

+0

Vedere questa risposta: http://stackoverflow.com/questions/25592826/basic-laravel-4-routing/25592890#25592890 –

3

questo risolverà il tuo problema, e io sono d'accordo che non dovremmo essere limitata del quadro.

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]); 
} 

ritorno

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

La risposta accettata non mi ha aiutato: ecco la mia versione, sulla base di esempio per riferimento. Nota questo è con Laravel 5.2 non Laravel 4 come indicato nella domanda. Si noti che funzionerà con Laravel 4.

Prima ottenere i parametri dall'url corrente.

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

Quindi aggiungere o modificare ciò che si desidera.

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

Spingere tutti i parametri sul percorso desiderato.

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

I parametri che non sono compensate nell'URL percorso sono aggiunti alla fine dell'URL.

Happy dayz. : D

Problemi correlati