뷰 데코레이터

뷰 데코레이터란?

뷰 데코레이터를 사용하면 렌더링 과정에서 애플리케이션이 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',
    ];
}

이제 등록되었으므로 이 데코레이터는 렌더링되거나 파싱되는 모든 뷰에 대해 호출됩니다. 데코레이터는 이 설정에 지정된 순서대로 호출됩니다.