2014-09-18 78 views
0

我想从我的控制器中的url中删除空查询变量。我的网址是/search?qi=yoga&q=,注意q是空的。有时候气将是空的。我怎样才能删除这些?看起来像一个简单的问题,但我似乎无法找到一个优雅的解决方案。laravel清理空查询变量

function search() { 
    $qi = Request::get('qi'); 
    $q = Request::get('q')); 
    $results = getResults($qi, $q); 

    return View::make('search.results', compact('results')); 
} 

回答

1

你可以做的是,在接下来的请求,但你必须重定向::刷新()或用干净的URL重定向到::($网址),像

$items = Redirect::query(); 

$items = $this->removeEmptyItems($items); /// you'll have to create this method! 

return Redirect::route('your.current.route', $items); 

由于你可以看到,这将清理你的网址,但它需要一个新的请求。

但是,这看起来像是您当前请求中的内容,恐怕Laravel无法为您更改浏览器中的URL。如果这是一个表单提交的查询,使用Javascript可以帮助您阻止发送这些空查询:

$('form').submit(function(){$('input[value=]',this).remove();return true;}) 
+0

Javascript来救援!我知道这一定很简单。谢谢Antonio。 – dwenaus 2014-09-18 20:52:39

0

我的建议是:

function search() 
{ 
    $search = array_filter(Request::all()); // or only(..)/except(..) 

    $results = getResults($search); 
}