# Requirements ## Introduction The requirements class takes care of including CSS and JavaScript into your applications. This is preferred to hardcoding any references in the `
`-tag of your template, as it enables a more flexible handling. ## Including inside PHP Code It is common practice to include most Requirements either in the *init()*-method of your [controller](/topics/controller), or as close to rendering as possible (e.g. in `[api:FormField]` :::php Requirements::javascript("cms/javascript/LeftAndMain.js"); Requirements::css("cms/css/TreeSelector.css"); If you're using the CSS method a second argument can be used. This argument defines the 'media' attribute of the `` element, so you can define 'screen' or 'print' for example. Requirements::css("cms/css/TreeSelector.css", "screen,projection"); ## Including inside Template files If you do not want to touch the PHP (for example you are constructing a generic theme) then you can include a file via the templates <% require css(cms/css/TreeSelector.css) %> <% require themedCSS(TreeSelector) %> <% require javascript(cms/javascript/LeftAndMain.js) %> ## Combining Files You can concatenate several CSS or javascript files into a single dynamically generated file. This increases performance reducing HTTP requests. Note that for debugging purposes combined files is disabled in devmode. :::php // supports CSS + JS Requirements::combine_files( 'foobar.js', array( 'mysite/javascript/foo.js', 'mysite/javascript/bar.js', ) ); By default it stores the generated file in the assets/ folder but you can configure this by setting :::php // relative from the base folder Requirements::set_combined_files_folder('folder'); If SilverStripe doesn't have permissions on your server to write these files it will default back to including them individually . ## Custom Inline Scripts You can also quote custom script directly. This may seem a bit ugly, but is useful when you need to transfer some kind of 'configuration' from the database to the javascript/css. You'll need to use the "heredoc" syntax to quote JS and CSS, this is generally speaking the best way to do these things - it clearly marks the copy as belonging to a different language. :::php Requirements::customScript(<<