2016-07-22 11 views
1

SilverstripeのデフォルトのFileFieldを置き換えて、ファンシーアップロード(フロントエンド)に変更する小さなモジュールを構築しています。私はYamlのインジェクターメソッドでクラスを置き換えます。これは問題なく動作しているようです。Silverstripe:モジュールからカスタムcss/jsを追加する方法

しかし、特定のフィールドが使用されている場合にのみ含める必要があるjsとcssを追加する必要があります。 forTemplateメソッドとfilefieldクラスのコンストラクタを試しましたが、どちらもhtmlに追加されるファイルにはなりません。

これを行う方法はありますか?

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

が代わりに必要な含めて、私は、しかし、これは世界的に追加されますあなたがあなたのconfig.ymlファイルに以下を追加することにより、CMSでの要件を追加することができますSS 3.4

答えて

1

を使用しています

...ちょうどフォームフィールドコンストラクタ内のソースファイルは、このフィールドが表示されているときだけで含まれるであろう...

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

しかし、config.ymlにcss/jsを追加することには注意が必要です。そのためには、モジュールのディレクトリ名を修正する必要があります理想よりも小さい – jberculo

関連する問題