【说站】laravel实现自定义404页面并给页面传值

2022-11-24 16:53:38 浏览数 (1)

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 resources/views/errors 目录中即可

当 laravel 抛出 404 时就会渲染该视图,可如果我们要在这个视图文件传递变量呢?

这时候就需要用到 view composer 了,操作如下:

创建 touch app/Providers/ViewServiceProvider.php 文件,粘贴以下代码:

代码语言:javascript复制
<?php namespace AppProviders;use IlluminateSupportServiceProvider;class ViewServiceProvider extends ServiceProvider{    /**     * Register bindings in the container.     *     * @return void     */    public function boot()    {        view()->composer('errors::404', function () {            $data = [];            view()->share('title', '找不到内容');            view()->share('data', $data);        });    }     /**     * Register the service provider.     *     * @return void     */    public function register()    {        //    }}

将该文件注册到服务中,在 config/app.php 的 providers 数组中加上:

代码语言:javascript复制
AppProvidersViewServiceProvider::class,

综上,就能向指定的视图文件传递变量,还可以用数组指定多个视图,或者用 * 指定所有视图,如:

代码语言:javascript复制
view()->composer(['errors::404', 'home::index'], function () {    view()->share('test', '测试');});view()->composer('*', function () {    view()->share('hello', 'world');});

收藏 | 0点赞 | 0打赏

0 人点赞