interface AssetResolverInterface (View source)

Resolves asset libraries into concrete CSS and JavaScript assets.

Given an attached assets collection (to be loaded for the current response), the asset resolver can resolve those asset libraries into a list of concrete CSS and JavaScript assets.

In other words: this allows developers to translate Drupal's asset abstraction (asset libraries) into concrete assets.

Methods

array
getCssAssets(AttachedAssetsInterface $assets, bool $optimize)

Returns the CSS assets for the current response's libraries.

array
getJsAssets(AttachedAssetsInterface $assets, bool $optimize)

Returns the JavaScript assets for the current response's libraries.

Details

array getCssAssets(AttachedAssetsInterface $assets, bool $optimize)

Returns the CSS assets for the current response's libraries.

It returns the CSS assets in order, according to the SMACSS categories specified in the assets' weights:

  • CSS_BASE
  • CSS_LAYOUT
  • CSS_COMPONENT
  • CSS_STATE
  • CSS_THEME

Parameters

AttachedAssetsInterface $assets

The assets attached to the current response.

bool $optimize

Whether to apply the CSS asset collection optimizer, to return an optimized CSS asset collection rather than an unoptimized one.

Return Value

array

A (possibly optimized) collection of CSS assets.

See also

https://www.drupal.org/node/1887918#separate-concerns This ensures proper cascading of styles so themes can easily override module styles through CSS selectors. Themes may replace module-defined CSS files by adding a stylesheet with the same filename. For example, themes/bartik/system-menus.css would replace modules/system/system-menus.css. This allows themes to override complete CSS files, rather than specific selectors, when necessary. Also invokes hook_css_alter(), to allow CSS assets to be altered.

array getJsAssets(AttachedAssetsInterface $assets, bool $optimize)

Returns the JavaScript assets for the current response's libraries.

References to JavaScript files are placed in a certain order: first, all 'core' files, then all 'module' and finally all 'theme' JavaScript files are added to the page. Then, all settings are output, followed by 'inline' JavaScript code. If running update.php, all preprocessing is disabled.

Note that hook_js_alter(&$javascript) is called during this function call to allow alterations of the JavaScript during its presentation. The correct way to add JavaScript during hook_js_alter() is to add another element to the $javascript array, deriving from drupal_js_defaults(). See locale_js_alter() for an example of this.

Parameters

AttachedAssetsInterface $assets

The assets attached to the current response. Note that this object is modified to reflect the final JavaScript settings assets.

bool $optimize

Whether to apply the JavaScript asset collection optimizer, to return optimized JavaScript asset collections rather than an unoptimized ones.

Return Value

array

A nested array containing 2 values:

  • at index zero: the (possibly optimized) collection of JavaScript assets for the top of the page
  • at index one: the (possibly optimized) collection of JavaScript assets for the bottom of the page