2016-07-22 9 views
1

Ich bin ein kleines Modul, das das Standard-FileField in Silverstripe ersetzt und verwandelt es in einen schickeren Upload (im Frontend). Ich ersetze die Klasse durch die Injektormethode in Yaml. Das scheint gut zu funktionieren.Silverstripe: Wie man benutzerdefinierte css/js aus Modul

Allerdings muss ich einige js und css hinzufügen, die nur bei der Verwendung des spezifischen Feldes enthalten sein müssen. Ich habe die forTemplate-Methode und den Konstruktor der Dateifeldklasse ausprobiert, aber beide führen nicht dazu, dass die Dateien zum html hinzugefügt werden.

Gibt es eine Möglichkeit, dies zu tun?

Ich bin mit SS 3.4

Antwort

1

Sie können, indem Sie die folgenden auf Ihre config.yml Datei im CMS-Anforderungen hinzufügen, jedoch wird dieser global hinzufügen ...

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

Statt einschließlich der erforderlichen Quelldateien nur im Konstruktor würde nur Formfield enthalten, wenn dieses Feld ...

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

Sie können auch Code hinzufügen direkt möglicherweise einschließlich Wert s aus dem PHP so ...

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

Oder wie oben, aber es muss im Header ...

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

Dank aufgenommen werden! Ich war schon dabei. Außerdem habe ich einen Tippfehler in den Skriptnamen gemacht. Deshalb erschien es nicht, nachdem ich es in den Konstruktor geschrieben hatte :( – jberculo

+1

Es gibt jedoch einen zusätzlichen Vorbehalt beim Hinzufügen der css/js zur config.yml. Dazu sollte der Name des Modulverzeichnisses festgelegt sein, und ich denke das ist weniger als ideal – jberculo