# 视图装饰器

## 什么是视图装饰器？

视图装饰器允许应用在渲染过程中修改 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',
        ];
    }

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