我如何用查询字符串重定向回来


How can I redirect back with query string?

我有一个包含不同数据选项卡的表单。选项卡由查询字符串激活。保存提交的表单的内容后,我需要重定向回它,以使用查询数据显示相应的选项卡。怎么才能做到呢?

目前我正在使用这个重定向:

return Redirect::back()->withErrors($validation);

,但这将返回到第一个选项卡,即使该选项卡上没有任何更改。我看到了类似

的东西
return Redirect::back()->withErrors($validation)->withQuery('tab'=>'info');

但这不起作用。有什么建议吗?

这可能不是最佳实践,但我已经在L5.8中使用它来重定向返回查询字符串,并且它按预期工作。

# Clear previous url from query string
$previousUrl = strtok(url()->previous(), '?');
return redirect()->to(
    $previousUrl . '?' . http_build_query(['foo' => 'bar'])
);

如果您使用Redirect::to(),那么很简单。

return Redirect::to('route_name?q='.$append_data)

如果您想使用Redirect::back(),请执行以下操作

# Pass the value while redirecting
return Redirect::back()->with('query_data', 'some_data');

并添加条件到您的刀片文件。

@if(!empty(Session::get('query_data')) && Session::get('query_data') == 'some_data')
<script>
$(function() {
    //Change the tab using javascript or
    //use location.href to refresh after appending query params to url.
});
</script>
@endif

您可以使用会话:

return redirect()->back()->with('tab', 'info');

从会话中获取信息,使用session()全局助手,它在控制器和视图中工作:

session('tab');

return 'Redirect::route('route_name',['query1'=>'query1value','query2','query2value']);

这里