如何在Codeigniter 4(CI 4)中缩小视图HTML

hfsqlsce  于 2023-01-28  发布在  其他
关注(0)|答案(3)|浏览(105)

我知道在CI3中可以通过钩子缩小HTML,但在CI4中
我在每个方法的返回前添加了一个minify函数。

minifyHTML(view('admin/template/template',$this->data));

有没有其他方法可以做到这一点,而不使用缩小函数无处不在?
我还想出了另一个解决方案,这是添加一个模板函数在BaseConroller渲染所有的视图。但我已经使用视图()在许多地方的项目和它不可行的我,但可以为他人工作。

w6lpcovy

w6lpcovy1#

在CodeIgniter4中,您可以通过添加以下代码inti app/Config/Events.php file,使用Events来最小化输出(而不是像在CodeIgniter3中那样使用Hooks

//minify html output on codeigniter 4 in production environment
Events::on('post_controller_constructor', function () {

  if (ENVIRONMENT !== 'testing') {
while (ob_get_level() > 0)
{
    ob_end_flush();
}

ob_start(function ($buffer) {
    $search = array(
        '/\n/',      // replace end of line by a <del>space</del> nothing , if you want space make it down ' ' instead of ''
        '/\>[^\S ]+/s',    // strip whitespaces after tags, except space
        '/[^\S ]+\</s',    // strip whitespaces before tags, except space
        '/(\s)+/s',    // shorten multiple whitespace sequences
        '/<!--(.|\s)*?-->/' //remove HTML comments
    );

    $replace = array(
        '',
        '>',
        '<',
        '\\1',
        ''
    );

    $buffer = preg_replace($search, $replace, $buffer);
    return $buffer;
    });

  }

});

参见https://gitlab.irbidnet.com/-/snippets/3

xyhw6mcr

xyhw6mcr2#

您需要扩展您的核心系统类,以便能够在系统范围内执行此操作。
每次CodeIgniter运行时,都会有几个基类作为核心框架的一部分自动初始化,但是可以用自己的版本替换任何核心系统类,甚至只是扩展核心版本。
您可以扩展的两个类如下:

  • 代码触发器\视图\视图
  • 代码触发器\视图\转义符

例如,如果您有一个新的App\Libraries\View类,希望使用它来代替核心系统类,则应按如下方式创建类:
类声明必须扩展父类。

<?php namespace App\Libraries;

use CodeIgniter\View\View as View;

class View implements View
{
     public function __construct()
     {
         parent::__construct();
     }
}

类中与父类中的方法同名的任何函数都将被使用,而不是使用本机函数(这称为“方法重写”)。这允许您实质性地更改CodeIgniter核心。
因此,在本例中,您可以查看系统视图类,并更改它以返回已压缩的输出。
在您的情况下,您甚至可以添加一个额外的参数,以便查看函数可以返回压缩或未压缩的输出。
有关在CodeIgniter 4中扩展核心类的更多信息,请阅读:
https://codeigniter.com/user_guide/extending/core_classes.html#extending-core-classes

ki0zmccv

ki0zmccv3#

在CodeIgniter 4中,可以使用内置的输出压缩库来缩小视图的HTML输出。

  • 首先,需要在应用程序的配置文件中启用输出压缩,该文件位于app/Config/App.php
  • 然后,您需要设置压缩级别,您可以通过更改compress_output选项的值来设置压缩级别,可能的值为:
  • 0:关(不压缩输出)
  • 1:开(压缩输出,但不删除空格)
  • 2:开(压缩输出,并删除空白)

最后,在输出发送到浏览器之前,您需要在控制器中加载输出库。您可以使用以下代码行加载它:

$this->load->library('output');

相关问题