2016-07-22 37 views
1

我正在构建一个小模块,用于替换Silverstripe中的默认FileField并将其更改为fancier上传(位于前端)。我在Yaml通过喷射器方法替换了这个类。这似乎工作正常。Silverstripe:如何从模块添加自定义css/js

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

有没有办法做到这一点?

我使用SS 3.4

回答

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> 
"); 
+0

谢谢!我已经接受了。另外,我在脚本名称中输入了一个错字。这就是为什么在我将它放入构造函数后它没有出现的原因:( – jberculo

+1

然而,将css/js添加到config.yml还有一个额外的警告,为此,模块目录名称应该是固定的,我认为这并不理想 – jberculo

相关问题