data-render="script" 请问CMS这个__SCRIPT__脚本替换responseSend是如何应用的

发布于 2019-06-12 10:15:47

假如我现在不用CMS插件,但想应用data-render="script" 这个脚本替换,请问CMS这个__STYLE__和__SCRIPT__脚本替换responseSend应用的原理是什么

查看更多

关注者
0
被浏览
108
Karson
Karson FastAdmin创始人 2019-06-12
FastAdmin!

@jinglingaddons/cms/Cms.php中实现的。

2 个回答
jingling
jingling 2019-06-12
这家伙很懒,什么也没写!

@Karson我也找到是在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插件,把这个方法放到其他控制器中应该怎么用?

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览