【问题标题】:Silverstripe include vars into JS or CSS filesSilverstripe 将变量包含到 JS 或 CSS 文件中
【发布时间】:2017-01-02 00:46:34
【问题描述】:

我在 Silverstripe 网站上发现了这个自定义 js 编程:

https://docs.silverstripe.org/en/3.2/developer_guides/templates/requirements/

Requirements::javascriptTemplate("cms/javascript/editor.template.js", $vars);

在需求的最后,必须如何插入 $vars,这是否可以对 css 文件执行相同的操作?

【问题讨论】:

    标签: javascript php css variables silverstripe


    【解决方案1】:

    请查看api docs 以获取显示...的信息。

    if($vars) foreach($vars as $k => $v) {
        $search[] = '$' . $k;
        $replace[] = str_replace("\\'","'", Convert::raw2js($v));
    }
    
    $script = str_replace($search, $replace, $script);
    

    所以下面的数组...

    $vars = array(
        'iVal'  => '99',
        'iVal'  => "'string'",
    );
    

    将转换以下 JavaScript...

    var iVal = $iVal;
    var sVal = $sVal;
    

    到...

    var iVal = 99;
    var sVal = 'string';
    

    【讨论】:

    • 甜我不知道你能做到这一点。此外,如果您需要在任何基于文本的文件中执行复杂的操作,您可以通过 Silverstripe 模板引擎运行任何字符串(例如包含整个 js 或 css 文件的字符串),然后将其存储回磁盘或作为自定义发送css 或 js。
    • @barry :它有效,但不像我预期的那样。此代码将内联 javascript 中的文件转换为 html。是否有另一种方法可以直接在 js 文件中更改变量? html中没有内联代码
    • @NewbieSSProgrammer 是的,你也可以像这样使用 customScript...Requirements::customScript("var myVar=".$iMyVar.";alert(myVar);");
    • @barry:是的,我知道这一点。但是创建一个像combined_files 这样的文件呢?可能的?以主题目录中的新文件为例。
    • 对不起@NewbieSSProgrammer 我已经尽我所能回答了 - 我不明白你要求什么作为替代方案......也许是一个新问题......?
    猜你喜欢
    • 2018-10-06
    • 2017-08-23
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多