我在获取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
是这个查询是我的中间件的值... –