Php Laravel 4.2重定向::使用GET参数
是否可以使用Laravel 4.2中的Php Laravel 4.2重定向::使用GET参数,php,laravel,laravel-4.2,Php,Laravel,Laravel 4.2,是否可以使用Laravel 4.2中的redirect::to()重定向到带有GET参数的url 我试图在用户未登录时,在登录到请求页面后重定向用户 如果您未登录并且访问了授权页面,我会在会话中保存完整的请求url(此url可能类似于https://page.com/settings或https://page.com/post/23或https://page.com/post/23?show=full。有很多变体) 当您登录并在会话中存储url时,我使用redirect::to重定向您(http
redirect::to()
重定向到带有GET参数的url
我试图在用户未登录时,在登录到请求页面后重定向用户
如果您未登录并且访问了授权页面,我会在会话中保存完整的请求url(此url可能类似于https://page.com/settings
或https://page.com/post/23
或https://page.com/post/23?show=full
。有很多变体)
当您登录并在会话中存储url时,我使用redirect::to重定向您(https://page.com/post/23)
在前两种情况下没有问题,但是当我使用Redirect::to时(https://page.com/post/23?show=full)
GET参数被忽略
是否有重定向到包含GET参数的url的选项 试试这个:
你可以像这样通过
您可以通过以下方式获得:
Request::segment(3);
你的申请有问题。如果我理解正确,重定向后您的url中不存在您的查询参数(例如:
?param=true¶m2=1
)
考虑以下示例:
Route::get('/test', function () {
return Redirect::to('http://localhost:8000/test2?with=params');
});
Route::get('/test2', function () {
echo '1';
});
当我尝试访问:localhost:8000/test
时,我被重定向到:http://localhost:8000/test2?with=params
这是预期的行为。你能举一个例子说明你在哪里做重定向吗
另外,我建议使用:它本身就可以实现您想要的功能。为什么不重定向::back()?身份验证过滤器应该能够将所有未经身份验证的请求重定向到登录页面,然后将用户重定向到上一个访问过的页面
编辑:,而不是中间件。在Laravel中,默认情况下,如果您使用的是auth中间件,则此功能可用,如下所示:
Route::group(array('before' => 'auth'), function(){
//authorized routes
});
示例
如果未登录的用户正在访问url“example.com/user?abc=123”,这是一个授权的路由
然后用户将自动重定向到登录页面
成功登录后,用户将自动重定向到第一个请求的url(“example.com/user?abc=123”)是的,这是一个解决方案,但效率不高,因为我必须更改很多方法。应用程序在很多页面中使用Get参数,所以我宁愿做其他东西。如果我在routes.php或某个控制器中进行重定向,会有什么不同吗?我不认为,或者?我的控制器中有这样一个:
if(Session::has('reqUrl')){$url=Session::get('reqUrl');//var_dump($url);--它返回http://web.com/post/23?show=full 会话::忘记('reqUrl');返回重定向::到($url)->with('message',trans('a.user-successfully-logged'))->with('message-type','ok');}
所以我不知道问题出在哪里。然后,在路由(用于post)中,我只有:Route::get('post/{id}',array('before',=>'locale | auth','uses'=>'HomeController@getPost'));
@Autista_z返回Redirect::to()
的位置没有区别。您是否尝试过手动设置url,而不是为了调试而使用Session::get()
?我发现了我的错误,我很愚蠢。我使用SSL证书,但我在会话中将url保存为http而不是https,然后如果筛选器是if(!Request::secure()){return Redirect::secure(Request::path());}
,则不会进一步传递。@Autista_z,不,任何人都会这样。我只是想确保您知道使用Redirect::to()
传递GET参数是可以的,问题是本地的:p在Laravel 4.2中没有中间件。