addons/cms/Cms.php中的responseSend是如何运行的?把这个方法放到其他控制器中应该怎么用?

发布于 4 days ago

addons/cms/Cms.php中有个脚本替换方法如下:

/**
 * 脚本替换
 * @param \think\Response $response
 */
public function responseSend(\think\Response $response)
{
    $style = '';
    $script = '';
    $content = $response->getContent();
    $result = preg_replace_callback("/<(script|style)\s(data\-render=\"(script|style)\")([\s\S]*?)>([\s\S]*?)<\/(script|style)>/i", function ($match) use (&$style, &$script) {
        if (isset($match[1]) && in_array($match[1], ['style', 'script'])) {
            ${$match[1]} .= str_replace($match[2], '', $match[0]);
        }
        return '';
    }, $content);
    $content = str_replace(['', ''], [$style, $script], $result ? $result : $content);
    $response->content($content);
}

但我没找到responseSend这个方法是如何运行的,如果我不安装CMS插件,把这个方法放到其他控制器中应该怎么用?

查看更多

关注者
0
被浏览
39
Karson
Karson FastAdmin创始人 4 days ago
FastAdmin!

@jingling 这个就是一个hook,如果你希望你其它地方也可以使用,将它放到

application/common/behavior/Common.php

然后修改application/tags.php,修改成:

<?php

// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 应用行为扩展定义文件
return [
    // 应用初始化
    'app_init'     => [],
    // 应用开始
    'app_begin'    => [],
    // 模块初始化
    'module_init'  => [
        'app\\common\\behavior\\Common',
    ],
    // 插件开始
    'addon_begin'  => [
        'app\\common\\behavior\\Common',
    ],
    // 操作开始执行
    'action_begin' => [],
    // 视图内容过滤
    'view_filter'  => [],
    // 日志写入
    'log_write'    => [],
    // 应用结束
    'app_end'      => [],
    // 
    'response_end'      => [
        'app\\common\\behavior\\Common',
    ],
];
1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览