ミドルウェア「CheckReferral」でCookieを取得する際に問題がありますが、1つのコントローラでCookieを呼び出したときにnullが返され、ブラウザのCookieがチェックされ、クッキーはブラウザでいいです、私はクッキーの問題は何か分かりません...私はあまりにも多くのGoogle検索したこれは私の最後のリソースです、誰かが私を助けることができますか?ここでCookie :: get()return 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);
}
これは私がコントローラにクッキーを呼び出す方法です。ここで
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'),
]);
}
はブラウザに保存されたクッキーです:
ここにデータベースがあります...フィールドrefer_byはsですヌルとしてtoredが、Cookieの値を保存する必要があります。
がたくさんありがとう、私は
はい、カーネルにミドルウェアを定義しました。その結果、クッキーはブラウザに保存されます。ミドルウェアはグローバルに実行され、ルートに定義する必要はありません。そして、私は '$ fillable [] '問題はCookie :: get()returです。 n nullと私はフィールドの電子メールでテストしました。それはnulableではありません。エラーが発生しました...だから、問題はCookie :: get()... –
実際にはダンプしてみてくださいあなたのミドルウェアの価値。 "$ request-> query( 'ref')' ' – verax
はいこのクエリは私のミドルウェアの値です... –