发布于 4年前

laravel自定义404页面并给页面传值

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

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

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

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

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

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数组中加上:

App\Providers\ViewServiceProvider::class,

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

view()->composer(['errors::404', 'home::index'], function () {
    view()->share('test', '测试');
});
view()->composer('*', function () {
    view()->share('hello', 'world');
});
©2020 edoou.com   京ICP备16001874号-3