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

Silverstripe:如何从模块添加自定义css/js,silverstripe,Silverstripe,我正在构建一个小模块,它将替换Silverstripe中的默认文件字段,并将其更改为一个fancier上载(在前端)。我通过Yaml中的injector方法替换该类。这似乎很有效 但是,我需要添加一些js和css,它们只需要在使用特定字段时包含。我尝试了forTemplate方法和filefield类的构造函数,但这两种方法都不会导致将文件添加到html中 有办法做到这一点吗 我使用的是SS 3.4您可以通过在config.yml文件中添加以下内容来在CMS中添加需求,但是这将在全局范围内添加

我正在构建一个小模块,它将替换Silverstripe中的默认文件字段,并将其更改为一个fancier上载(在前端)。我通过Yaml中的injector方法替换该类。这似乎很有效

但是,我需要添加一些js和css,它们只需要在使用特定字段时包含。我尝试了forTemplate方法和filefield类的构造函数,但这两种方法都不会导致将文件添加到html中

有办法做到这一点吗


我使用的是SS 3.4

您可以通过在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>
");
Requirements::insertHeadTags(“
#表单过滤器执行字段{
显示:内联块;
宽度:31%
}
jQuery(文档).ready(函数(){
//JS代码在这里
});
");

谢谢!我已经知道了。此外,我在脚本名称中输入了一个错误。这就是为什么在我将它放入构造函数后它没有出现的原因:(但是,在config.yml中添加css/js还有一个额外的警告。为此,模块目录名应该是固定的,我认为这不太理想