我在獲取Cookie時遇到問題,我在一箇中間件「CheckReferral」中定義了一個cookie,但是當我在一個Controller中調用cookie時,cookie返回null,我在瀏覽器中檢查cookie,並且該cookie在瀏覽器中很好,我不知道cookie有什麼問題...我已經搜索了太多,這是我的最後一個資源,有人可以幫助我嗎?Cookie :: get()返回null
這裏是中間件的代碼:
<?php
namespace App\Http\Middleware;
use Closure;
class CheckReferral
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->hasCookie('referral')) {
return $next($request);
} else {
if ($request->query('ref')) {
return redirect($request->fullUrl())->withCookie(cookie()->forever('referral', $request->query('ref')));
}
}
return $next($request);
}
這是我如何調用該cookie控制器:
protected function create(array $data)
{
// $referred_by = User::where('affiliate_id', Cookie::get('referral'))->first();
// $referred_user = Cookie::get('referral');
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'affiliate_id' => $this->uniqueRandomString(),
'referred_by' => Cookie::get('referral'),
]);
}
這裏是存儲在瀏覽器中的cookie:
這裏是數據庫...字段refer_by,是s tored爲空,但應存儲的cookie的值:
感謝了很多,我希望解決的問題,並知道原因......
是的,我已經在內核中定義了中間件,因爲cookie存儲在瀏覽器中......並且中間件全局運行,不需要在路由中定義......並且我已經將'$ fillable []'問題是Cookie :: get()返回N空,我已經測試它與現場電子郵件,這是不可能的,我得到的錯誤...所以,問題是Cookie :: get()... –
請嘗試傾倒這個,如果它實際上在你的中間件中的價值。 ''request-> query('ref')'' – verax
是這個查詢是我的中間件的值... –