我正在创建一个控制器可以调用另一个控制器的逻辑取决于 Auth::user() 角色,但并非所有控制器都共享相同的方法,所以我希望如果控制器调用不存在的方法,它将抛出 404 not found . 这是我的控制器
class LokalController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
Public $controller;
public function __construct()
{
//$this->middleware('adminakses');
$this->middleware(function ($request, $next) {
$this->setController();
return $next($request);
});
}
public function setController()
{
$role = Auth::user()->role;
switch ($role)
{
case 'admin':
$this->controller = new \SIA\Http\Controllers\Admin\LokalController;
break;
case 'guru':
$this->controller = new \SIA\Http\Controllers\Guru\LokalController;
break;
case 'siswa':
$this->controller = new \SIA\Http\Controllers\Guru\LokalController;
break;
}
}
public function index()
{
return $this->controller->index();
}
例如 Admin\LokalController 有方法 A(),但 Guru\LokalController 没有,如果用户以 guru 身份登录并尝试调用方法 A(),它应该返回未找到的异常或用户可以理解的消息,但当前显示 BadMethodCallException方法 A() 不存在