用户在我的网站上注册帐户后,他们已登录,在我的用户表中设置“非活动”状态,发送激活电子邮件,并限制某些功能,直到他们通过点击其中的链接激活他们的帐户电子邮件。我已经完成了所有这些工作,但遇到了一个问题,即使用重定向闪烁数据。会话工作正常,我可以成功地放置值。但是,如果我闪存数据,它似乎没有设置。如果我的主页模板中的dd(Session::all())
闪存阵列完全为空:
array:4 [
"_token" => "..."
"_previous" => array:1 [...]
"flash" => array:2 [
"old" => []
"new" => []
]
"login_..." => 1
]
Route::get('activate/{code}', 'ActivateController@getActivate')
->where('code', '[0-9a-f]{64}');
<?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);
}
}
如果有人能帮助我,我会非常感激。如果有任何其他信息有用,请告诉我,我会提供。
答案 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);
解决了我的问题!