用户激活无法闪存数据后,Laravel重定向

时间:2016-01-08 18:06:42

标签: php laravel session laravel-5.1

用户在我的网站上注册帐户后,他们已登录,在我的用户表中设置“非活动”状态,发送激活电子邮件,并限制某些功能,直到他们通过点击其中的链接激活他们的帐户电子邮件。我已经完成了所有这些工作,但遇到了一个问题,即使用重定向闪烁数据。会话工作正常,我可以成功地放置值。但是,如果我闪存数据,它似乎没有设置。如果我的主页模板中的dd(Session::all())闪存阵列完全为空:

array:4 [
    "_token" => "..."
    "_previous" => array:1 [...]
    "flash" => array:2 [
        "old" => []
        "new" => []
    ]
    "login_..." => 1
]

routes.php文件

Route::get('activate/{code}', 'ActivateController@getActivate')
    ->where('code', '[0-9a-f]{64}');

ActivateController.php

<?php

namespace App\Http\Controllers;

use DB;
use Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class ActivateController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function getActivate(Request $request, $code)
    {
        $user = User::where('activation_code', $code)->where('status', 'inactive')->first();

        if ($user && $user->id == Auth::user()->id && $user->update(['status' => 'active'])) {
            $message = 'Account activated successfully.';
        } elseif ($user) {
            $message = 'Invalid activation token.';
        } else {
            $message = 'Activation code not found or user is already activated.';
        }

        return redirect('home')->with('msg', $message);
    }
}

如果有人能帮助我,我会非常感激。如果有任何其他信息有用,请告诉我,我会提供。

1 个答案:

答案 0 :(得分:0)

相当令人尴尬,但我的全部路线重定向到我的命名“主页”路线,所以我无法看到实际发生的两个重定向,因为它从/activate重定向到/home(其中不存在)到/因此丢失闪烁的数据:

Route::get('activate/{code}', 'ActivateController@getActivate')
    ->where('code', '[0-9a-f]{64}');

// Default
Route::get('/', 'IndexController@showIndex')->name('home');
Route::any('{all?}', function() {
    return Redirect::route('home');
});

简单的改变:

return redirect('home')->with('msg', $message);

为:

return redirect()->route('home')->with('msg', $message);

解决了我的问题!