【问题标题】:Laravel redirect after user activation failing to flash data用户激活后 Laravel 重定向无法刷新数据
【发布时间】:2016-01-09 02:59:59
【问题描述】:

用户在我的网站上注册帐户后,在他们登录后,在我的用户表中设置“非活动”状态,发送激活电子邮件,并限制某些功能,直到他们通过单击电子邮件。我已经完成了所有这些工作,但在使用重定向闪烁数据时遇到了问题。会话运行良好,我可以成功输入值。但是,如果我刷新数据,它似乎没有设置。如果我在我的主页模板中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}');

激活控制器.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);
    }
}

如果有人可以帮助我,我将不胜感激。如果有任何其他信息有帮助,请告诉我,我会提供。

【问题讨论】:

    标签: php laravel session laravel-5.1


    【解决方案1】:

    很尴尬,但是我的包罗万象的路由重定向到我命名的“家”路由,所以我无法看到实际上发生了两个重定向,因为它从 /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);
    

    解决了我的问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2021-03-27
      • 1970-01-01
      相关资源
      最近更新 更多