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.ph
p的providers
数组中加上:
App\Providers\ViewServiceProvider::class,
综上,就能向指定的视图文件传递变量,还可以用数组指定多个视图,或者用 * 指定所有视图,如:
view()->composer(['errors::404', 'home::index'], function () {
view()->share('test', '测试');
});
view()->composer('*', function () {
view()->share('hello', 'world');
});