视图装饰器

什么是视图装饰器?

视图装饰器允许应用在渲染过程中修改 HTML 输出。该操作发生在缓存之前,可对视图应用自定义功能。

使用 视图渲染器视图解析器 时均可使用视图装饰器。

创建装饰器

创建装饰器类

要创建自定义视图装饰器,需要新建一个实现 CodeIgniter\View\ViewDecoratorInterface 的类。 该类只需包含一个方法,接收生成的 HTML 字符串,进行任意修改后返回最终的 HTML。

<?php

namespace App\Views\Decorators;

use CodeIgniter\View\ViewDecoratorInterface;

class MyDecorator implements ViewDecoratorInterface
{
    public static function decorate(string $html): string
    {
        // Modify the output here

        return $html;
    }
}

注册装饰器类

创建完成后,必须在 app/Config/View.php 中注册该类:

<?php

namespace Config;

use CodeIgniter\Config\View as BaseView;

class View extends BaseView
{
    // ...

    public array $decorators = [
        'App\Views\Decorators\MyDecorator',
    ];
}

注册后,装饰器将在每次渲染或解析视图时被调用。 装饰器按照在此配置项中指定的顺序依次执行。