Silverstripe:如何从模块添加自定义css / js

时间:2016-07-22 20:59:06

标签: silverstripe

我正在构建一个小模块,用于替换Silverstripe中的默认FileField,并将其更改为更高级的上传(在前端)。我通过Yaml中的注入器方法替换了类。这似乎工作正常。

但是,我需要添加一些js和css,只有在使用特定字段时才必须包含它们。我尝试了forTemplate方法和filefield类的构造函数,但两者都没有导致文件被添加到html。

有办法做到这一点吗?

我正在使用SS 3.4

1 个答案:

答案 0 :(得分:1)

您可以通过在config.yml文件中添加以下内容来在CMS中添加需求,但这会全局添加...

LeftAndMain:
  extra_requirements_css:
    - mymodule/css/mymodule.css
  extra_requirements_javascript:
    - mymodule/javascript/mymodule.js

在FormField构造函数中包含所需的源文件,只包括显示此字段的时间......

Requirements::javascript("mymodule/javascript/mymodule.js");
Requirements::css('mymodule/css/mymodule.css');

您也可以直接添加代码,可能包括PHP中的值,如...

Requirements::customCSS('
    #Form_FilterForm .field {
        display:inline-block;
        width:31%
    }
');
Requirements::customScript('
    jQuery(document).ready(function(){
        //JS Code here
    });
');

或者如上所述,但它必须包含在标题中......

Requirements::insertHeadTags("
    <style>
        #Form_FilterForm .field {
        display:inline-block;
        width:31%
        }
    </style>
    <script>
    jQuery(document).ready(function(){
        //JS Code here
    });
    </script>
");