我在app\ExceptionsHandler.php
中有一些代码检查URL是否存在,如果没有,那么它会检查数据库是否是自定义URL,如果是,那么它将返回一个视图。我认为,这个问题是因为它没有通过Web中间件传递,因为Auth::id()
为空,所以没有启动会话和auth,即使我已100%登录
有更简单的方法吗?
public function render($request, Exception $exception)
{
if($exception instanceof NotFoundHttpException)
{
if(\App\EventMeter::isURL()) {
$ec = new EventsController();
return $ec->eventMeter();
}
if(\App\Tournament::isTournamentURL()) {
$t = new TournamentController();
return $t->home();
}
if(BountyHunter::isURL())
{
$bhc = new BountyHunterController();
return $bhc->home();
}
return response()->view('errors.missing',array(), 404);
}
return parent::render($request, $exception);
}
答案 0 :(得分:3)
也许你应该将责任转移到路线上。
Route::get('{uri}', ['uses' => 'PageController@view', 'as' => 'page'])
->where('uri', '.*');
Controller可以处理您的所有视图,并可以执行路由和重定向,允许您拥有所需的任何其他路径。通过创建一个类,例如,可以处理所有不同事件的LayoutService,可以重定向到适当位置的Tournament,Bounty。这将允许您访问所有Web中间件。
// Logic to determine what method you want to be called
$template = 'events|tournament|etc';
if (method_exists($this->layoutService, $template)
&& is_callable(array($this->layoutService, $template))) {
return call_user_func(
array($this->layoutService, $template)
);
}