Laravel 5自定义404控制器

geoffs3310

我正在制作具有CMS且存储在数据库中的页面的laravel应用。数据库中的页面记录具有ID,标题,内容和URL段。

我想要它,以便如果有人访问url slug,那么它将加载一个页面以显示该页面的内容。因此,我认为我需要重写404处理程序,以便说用户在404之前进入mysite.com/about,它会检查数据库以查看是否有记录存储为url。如果存在,它将加载页面以显示内容,否则将显示404。通过以下解决方案,我完成了90%的工作:

我已将App \ Exceptions \ handler.php中的render方法修改为以下内容:

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e)
{
    if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
        $page = Page::where('url', '=', Request::segment(1))->first();
        if(!is_null($page)) {
            return response(view('page', [ 'page' => $page ]));
        }
    }
    return parent::render($request, $e);
}

这可行,但是存在一个问题,我所有的菜单也都存储在数据库中,并且我有一个FrontendController,可以从数据库中获取所有菜单并加载到视图中。我所有的控制器都扩展了FrontendController,以便在每次页面加载时都完成此操作,而不必重复任何代码。那么有没有办法我可以通过控制器路由所有404,从而可以扩展FrontendController?还是只需要重复前端控制器在异常处理程序文件中执行的所有逻辑?

geoffs3310

解决了!感谢Styphon给我这个主意,我将以下路线定义为我的最后一条路线:

Route::get('/{url}', 'FrontendController@page');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel 5自定义404控制器

来自分类Dev

在Laravel 5控制器中使用自定义函数

来自分类Dev

在控制器上自定义 Laravel 邮件错误

来自分类Dev

更改控制器目录时找不到Laravel自定义控制器

来自分类Dev

如何在控制器Laravel中导入自定义类?

来自分类Dev

将Laravel包含到自定义PHP脚本中并路由到控制器

来自分类Dev

Laravel将自定义方法添加到资源控制器

来自分类Dev

Laravel自定义错误,模型已注入控制器

来自分类Dev

如何在控制器Laravel中添加自定义数据

来自分类Dev

在Laravel中包含自定义表单请求会阻止控制器正常工作

来自分类Dev

Laravel使用资源控制器的自定义动作名称和路由名称?

来自分类Dev

如何在控制器中的Laravel中使用自定义防护登录用户

来自分类Dev

从控制器laravel4调用自定义模型方法

来自分类Dev

将Laravel包含到自定义PHP脚本中并路由到控制器

来自分类Dev

如何在 Laravel 5.6 中向资源控制器添加自定义方法

来自分类Dev

如何在自定义命令中重用 Laravel 控制器代码

来自分类Dev

如何为我的 Laravel 自定义包的控制器创建别名

来自分类Dev

自定义404 Laravel

来自分类Dev

Laravel IOC自动解析-在控制器上工作,但不能在自定义类上工作

来自分类Dev

Laravel 5中不存在定义的控制器

来自分类Dev

自定义验证器在Laravel 5中

来自分类Dev

Laravel 4定义RESTful控制器

来自分类Dev

Laravel 4定义RESTful控制器

来自分类Dev

Laravel 5资源控制器

来自分类Dev

负载控制器在Laravel 5中

来自分类Dev

控制器中的 Laravel 5 验证

来自分类Dev

检查控制器中是否存在404响应错误-Laravel 5

来自分类Dev

LARAVEL5自定义登录

来自分类Dev

打包自定义类在Laravel 5

Related 相关文章

热门标签

归档