Laravel获取当前URL参数并附加到新URL请求

see*_*ate 6 php laravel-4

在我的Laravel应用程序中,我创建了一个侧边栏,我有链接

/buy?state=NY or /buy?area=Queens 让用户选择一个州或地区

我还有一个表单,允许用户过滤评级,流派等各种内容.当我点击过滤按钮时,网址会变为类似的内容

buy?min_year=1880&max_year=2019&min_rating=1&max_rating=10&genre=horror
Run Code Online (Sandbox Code Playgroud)

?state=NY or ?area=Queens从URL中删除

我想更改操作以将当前URL参数附加到Filter字符串

我试过了

$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;
Run Code Online (Sandbox Code Playgroud)

然后以我的过滤形式

{{ Form::open(array('url' => $url, 'class' => 'form-inline', 'method' => 'GET')) }}
Run Code Online (Sandbox Code Playgroud)

但这导致返回此字符串的形式.

/buystate=NY?min_year=1880&max_year=2019&min_rating=1&max_rating=10&genre=horror
Run Code Online (Sandbox Code Playgroud)

当我想要的时候

/buy?state=NY&min_year=1880&max_year=2019&min_rating=1&max_rating=10&genre=horror
Run Code Online (Sandbox Code Playgroud)

toe*_*lab 2

这仅适用于 Laravel 4.x!

如果我很了解你,这就是你所需要的。

Laravel 提供了出色的路由功能:

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
   );
});
Run Code Online (Sandbox Code Playgroud)

HTML 部分将类似于

<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() {...});
});
Run Code Online (Sandbox Code Playgroud)