Laravel redirect :: route在页面加载之间显示一条消息

Zhi*_*ong 3 php laravel laravel-4 laravel-routing

我目前正在使用Laravel开发一个Web应用程序,该应用程序直到最近一直运行良好.我不知道是什么引发了它,但这里是我所遇到的问题的摘要:

登录用于工作,因为我有一个AccountController执行此操作:

$auth = Auth::attempt(array(
    'username' => Input::get('username'),
    'password' => Input::get('password'),
    'active'=>1);
if ($auth) {
     return Redirect::route('home');
}

return Redirect::route('account-sign-in');
Run Code Online (Sandbox Code Playgroud)

家庭路线看起来像这样:

Route::get('/', array('as'=>'home', 'use'=>'HomeController@show'));
Run Code Online (Sandbox Code Playgroud)

该应用程序通常会在成功登录后立即返回主页.在我的home.blade.php中,我会@if(Auth::check())确保一旦用户登录,主页将提供不同的文本集.

最近,我注意到在提交登录请求后,有一个中间页面显示"重定向到http://localhost.com/" 消息.在此之前消息不存在,并且错误开始随此消息一起显示.

我查询了我可以在线获取的所有信息,有人建议源代码存在换行/空格问题.我查看了我的所有源代码,没有任何东西会暗示有什么问题.

当时绝望,我删除了Redirect :: route('home')并将其替换为View :: make('home').这阻止了消息的显示,我可以像往常一样再次登录.

所以我有两个问题:1)导致这个奇怪问题的原因是什么?2)在这种情况下使用View :: make()与Redirect :: route()有什么不对吗?

谢谢!

Moh*_*eed 5

我遇到了同样的问题,花了我整个周末来找到真正的原因并解决了这个问题.我登陆了这个stackoverflow问题,并感受到与我的问题相同的问题.

我使用以下核心php函数重定向,而不是从控制器返回一个视图文件.

header('Location: /');
Run Code Online (Sandbox Code Playgroud)

它打印出有空行的实际文件.删除此行修复了我的问题.

我的代码库中有成千上万的文件.我的假设是我尝试了不同的脚本来在任何文件的开头找到这样的空白行,并且根据这些脚本结果没有这样的文件.我假设我的任何文件中都没有空白行.但是标题('Location:/')证明了我的假设是不正确的,我正在做错线.


j5D*_*Dev 1

虽然没有看到更多的设置,调试起来会很棘手,但你的路线中确实有错误......

Route::get('/', array('as'=>'home', 'use'=>'HomeController@show'));
Run Code Online (Sandbox Code Playgroud)

应该:

Route::get('/', array('as'=>'home', 'uses'=>'HomeController@show'));
Run Code Online (Sandbox Code Playgroud)

注意“使用”而不是“使用”。

另外,使用 View::make 没有任何问题,但它可能不是最好的使用逻辑,因为用户将显示与 url 不匹配的内容。最佳做法是按照您当前的方式重定向它们......只需确保重定向后它们可以点击该路线即可。