Php $request->;会议没有';t在Laravel 5.3资源控制器中工作
首先,我已经在其他控制器(不是资源控制器)中检查了我的会话是否工作得很好,但是当我在资源控制器中检查时,我的get会话代码没有工作 这是我的资源控制器Php $request->;会议没有';t在Laravel 5.3资源控制器中工作,php,laravel,oop,session,laravel-5.3,Php,Laravel,Oop,Session,Laravel 5.3,首先,我已经在其他控制器(不是资源控制器)中检查了我的会话是否工作得很好,但是当我在资源控制器中检查时,我的get会话代码没有工作 这是我的资源控制器 <?php namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; use App\Http\Controllers\Controller; //tambahan use DB; use Session; //model use App\_admins
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
//tambahan
use DB;
use Session;
//model
use App\_admins;
use App\Mahasiswas;
class MahasiswaController extends Controller
{
protected $data;
protected $token;
public function __contruct(){
$this->data = array();
$this->middleware(function ($request, $next) {
$this->token = $request->session()->get('_admin_id');
if (!$request->session()->has('_admin_id')) {
abort(404);
}
return $next($request);
});
}
private function user($token){
$this->data['query'] = _admins::find($token);
}
public function index(){
echo $this->token;
}
在
5.3
中,中间件尚未在构造函数中运行,因此无法收集会话
数据。但是使用基于闭包的方法,您应该能够通过以下方式访问它:
$this->middleware(function($request, $next) {
// Get the session value (uses global helper)
$this->token = session('_admin_id');
// If the value is null, abort the request
if (null === $this->token) abort(404);
return $next($request);
});
有什么错误吗?您正在构造函数中调用$request
,但我不将其视为参数?试着输入类似的提示:\uu construct(Request$Request)
@camelCase好吧,我添加了它,但它仍然是一样的,我仍然没有从我的会话中获得任何数据,这个代码在其他控制器(不是资源控制器)中工作得很好。如果你在构造函数中dd($Request->session)
,它是否返回null
,我记得这是正常的,因为会话中间件还没有在构造函数中运行。我打赌你可以在构造函数之外访问会话,对吗?是的,你说得对,哇,太棒了。现在如何修复它,我只想从我的控制器调用它
$this->middleware(function($request, $next) {
// Get the session value (uses global helper)
$this->token = session('_admin_id');
// If the value is null, abort the request
if (null === $this->token) abort(404);
return $next($request);
});