Skip to content
PHP Ecosystem
Explore

AssetController

API reference › yii › console › controllers › AssetController

Allows you to combine and compress your JavaScript and CSS files.

Usage:

  1. Create a configuration file using the template action:

    yii asset/template /path/to/myapp/config.php

  2. Edit the created config file, adjusting it for your web application needs.

  3. Run the ‘compress’ action, using created config:

    yii asset /path/to/myapp/config.php /path/to/myapp/config/assets_compressed.php

  4. Adjust your web application config to use compressed assets.

Note: in the console environment some path aliases like @webroot and @web may not exist, so corresponding paths inside the configuration should be specified directly.

Note: by default this command relies on an external tools to perform actual files compression, check $jsCompressor and $cssCompressor for more details.

PropertyTypeDescriptionDefined by
$actionyii\base\Action<static>|nullThe action that is currently being executed. Default: null.yii\base\Controller
$assetManageryii\web\AssetManager|arrayAsset manager instance or its array configuration.AssetController
$behaviors read-onlyarray<yii\base\Behavior<static>>List of behaviors attached to this component.yii\base\Component
$bundlesarrayList of asset bundles to be compressed. Default: [].AssetController
$colorbool|nullWhether to enable ANSI color in the output. Default: null.yii\console\Controller
$cssCompressorstring|callableCSS file compressor. Default: 'java -jar yuicompressor.jar --type css {from} -o {to}'.AssetController
$defaultActionstringController default action ID. Default: 'compress'.AssetController
$deleteSourceboolWhether to delete asset source files after compression. Default: false. Available since 2.0.10.AssetController
$helpboolWhether to display help information about current command. Default: false. Available since 2.0.10.yii\console\Controller
$helpSummary read-onlystringThe one-line short summary describing this controller.yii\console\Controller
$idstringThe ID of this controller. Default: null.yii\base\Controller
$interactiveboolWhether to run the command interactively. Default: true.yii\console\Controller
$jsCompressorstring|callableJavaScript file compressor. Default: 'java -jar compiler.jar --js {from} --js_output_file {to}'.AssetController
$layoutstring|null|falseThe name of the layout to be applied to this controller’s views. Default: null.yii\base\Controller
$moduleyii\base\TThe module that this controller belongs to. Default: null.yii\base\Controller
$modules read-onlyyii\base\Module[]All ancestor modules that this controller is located within.yii\base\Controller
$passedOptions read-onlyarrayThe names of the options passed during execution.yii\console\Controller
$passedOptionValues read-onlyarrayThe properties corresponding to the passed options.yii\console\Controller
$requestyii\console\RequestThe request object.yii\console\Controller
$responseyii\console\ResponseThe response object.yii\console\Controller
$route read-onlystringThe route (module ID, controller ID and action ID) of the current request.yii\base\Controller
$silentExitOnExceptionbool|nullIf true - script finish with ExitCode::OK in case of exception. false - ExitCode::UNSPECIFIED_ERROR. Default: null. Available since 2.0.36.yii\console\Controller
$targetsarrayList of asset bundles, which represents output compressed files. Default: [].AssetController
$uniqueId read-onlystringThe controller ID that is prefixed with the module ID (if any).yii\base\Controller
$viewyii\base\View|yii\web\ViewThe view object that can be used to render views or view files.yii\base\Controller
$viewPathstringThe directory containing the view files for this controller.yii\base\Controller
MethodDescriptionDefined by
__construct()yii\base\Controller
__call()Calls the named method which is not a class method.yii\base\Component
__clone()This method is called after the object is created by cloning an existing one.yii\base\Component
__get()Returns the value of a component property.yii\base\Component
__isset()Checks if a property is set, i.e. defined and not null.yii\base\Component
__set()Sets the value of a component property.yii\base\Component
__unset()Sets a component property to be null.yii\base\Component
actionCompress()Combines and compresses the asset files according to the given configuration.AssetController
actions()Declares external actions for the controller.yii\base\Controller
actionTemplate()Creates template of configuration file for actionCompress().AssetController
afterAction()This method is invoked right after an action is executed.yii\base\Controller
ansiFormat()Formats a string with ANSI codes.yii\console\Controller
attachBehavior()Attaches a behavior to this component.yii\base\Component
attachBehaviors()Attaches a list of behaviors to the component.yii\base\Component
beforeAction()This method is invoked right before an action is executed.yii\console\Controller
behaviors()Returns a list of behaviors that this component should behave as.yii\base\Component
bindActionParams()Binds the parameters to the action.yii\console\Controller
canGetProperty()Returns a value indicating whether a property can be read.yii\base\Component
canSetProperty()Returns a value indicating whether a property can be set.yii\base\Component
className() staticReturns the fully qualified name of this class.yii\base\BaseObject
combineCssFiles()Combines CSS files into a single one.AssetController
combineJsFiles()Combines JavaScript files into a single one.AssetController
confirm()Asks user to confirm by typing y or n.yii\console\Controller
createAction()Creates an action based on the given action ID.yii\base\Controller
detachBehavior()Detaches a behavior from the component.yii\base\Component
detachBehaviors()Detaches all behaviors from the component.yii\base\Component
ensureBehaviors()Makes sure that the behaviors declared in behaviors() are attached to this component.yii\base\Component
findLayoutFile()Finds the applicable layout file.yii\base\Controller
getActionArgsHelp()Returns the help information for the anonymous arguments for the action.yii\console\Controller
getActionHelp()Returns the detailed help information for the specified action.yii\console\Controller
getActionHelpSummary()Returns a one-line short summary describing the specified action.yii\console\Controller
getActionOptionsHelp()Returns the help information for the options for the action.yii\console\Controller
getAssetManager()Returns the asset manager instance.AssetController
getBehavior()Returns the named behavior object.yii\base\Component
getBehaviors()Returns all behaviors attached to this component.yii\base\Component
getHelp()Returns help information for this controller.yii\console\Controller
getHelpSummary()Returns one-line short summary describing this controller.yii\console\Controller
getModules()Returns all ancestor modules of this controller.yii\base\Controller
getOptionValues()Returns properties corresponding to the options for the action id Child classes may override this method to specify possible properties.yii\console\Controller
getPassedOptions()Returns the names of valid options passed during execution.yii\console\Controller
getPassedOptionValues()Returns the properties corresponding to the passed options.yii\console\Controller
getRoute()Returns the route of the current request.yii\base\Controller
getUniqueId()Returns the unique ID of the controller.yii\base\Controller
getView()Returns the view object that can be used to render views or view files.yii\base\Controller
getViewPath()Returns the directory containing view files for this controller.yii\base\Controller
hasEventHandlers()Returns a value indicating whether there is any handler attached to the named event.yii\base\Component
hasMethod()Returns a value indicating whether a method is defined.yii\base\Component
hasProperty()Returns a value indicating whether a property is defined for this component.yii\base\Component
init()Initializes the object.yii\base\Controller
isColorEnabled()Returns a value indicating whether ANSI color is enabled.yii\console\Controller
off()Detaches an existing event handler from this component.yii\base\Component
on()Attaches an event handler to an event.yii\base\Component
optionAliases()Returns option alias names.yii\console\Controller
options()Returns the names of valid options for the action (id) An option requires the existence of a public member variable whose name is the option name.yii\console\Controller
prompt()Prompts the user for input and validates it.yii\console\Controller
render()Renders a view and applies layout if available.yii\base\Controller
renderContent()Renders a static string by applying a layout.yii\base\Controller
renderFile()Renders a view file.yii\base\Controller
renderPartial()Renders a view without applying layout.yii\base\Controller
run()Runs a request specified in terms of a route.yii\base\Controller
runAction()Runs an action with the specified action ID and parameters.yii\console\Controller
select()Gives the user an option to choose from. Giving ’?’ as an input will show a list of options to choose from and their explanations.yii\console\Controller
setAssetManager()Sets asset manager instance or configuration.AssetController
setView()Sets the view object to be used by this controller.yii\base\Controller
setViewPath()Sets the directory that contains the view files.yii\base\Controller
stderr()Prints a string to STDERR.yii\console\Controller
stdout()Prints a string to STDOUT.yii\console\Controller
trigger()Triggers an event.yii\base\Component
adjustCssUrl() protectedAdjusts CSS content allowing URL references pointing to the original resources.AssetController
adjustDependency() protectedAdjust dependencies between asset bundles in the way source bundles begin to depend on output ones.AssetController
bindInjectedParams() protected finalFills parameters based on types and names in action method signature.yii\base\Controller
buildTarget() protectedBuilds output asset bundle.AssetController
compressCssFiles() protectedCompresses given CSS files and combines them into the single one.AssetController
compressJsFiles() protectedCompresses given JavaScript files and combines them into the single one.AssetController
getActionMethodReflection() protectedyii\console\Controller
loadBundles() protectedCreates full list of source asset bundles.AssetController
loadConfiguration() protectedApplies configuration from the given file to self instance.AssetController
loadDependency() protectedLoads asset bundle dependencies recursively.AssetController
loadTargets() protectedCreates full list of output asset bundles.AssetController
parseDocCommentDetail() protectedReturns full description from the docblock.yii\console\Controller
parseDocCommentSummary() protectedReturns the first line of docblock.yii\console\Controller
parseDocCommentTags() protectedParses the comment block into tags.yii\console\Controller
registerBundle() protectedRegisters asset bundles including their dependencies.AssetController
saveTargets() protectedSaves new asset bundles configuration.AssetController
EventTypeDescriptionDefined by
EVENT_BEFORE_ACTIONyii\base\ActionEventAn event raised right before executing a controller action. Event name: 'beforeAction'.yii\base\Controller
EVENT_AFTER_ACTIONyii\base\ActionEventAn event raised right after executing a controller action. Event name: 'afterAction'.yii\base\Controller
public string|callable $cssCompressor = 'java -jar yuicompressor.jar --type css {from} -o {to}'

CSS file compressor.

If a string, it is treated as shell command template, which should contain placeholders {from} - source file name - and {to} - output file name. Otherwise, it is treated as PHP callback, which should perform the compression.

Default value relies on usage of “YUI Compressor”

public bool $deleteSource = false

Whether to delete asset source files after compression.

This option affects only those bundles, which have AssetBundle::$sourcePath is set.

Since

2.0.10

public string|callable $jsCompressor = 'java -jar compiler.jar --js {from} --js_output_file {to}'

JavaScript file compressor.

If a string, it is treated as shell command template, which should contain placeholders {from} - source file name - and {to} - output file name. Otherwise, it is treated as PHP callback, which should perform the compression.

Default value relies on usage of “Closure Compiler”

public array $targets = []

List of asset bundles, which represents output compressed files.

You can specify the name of the output compressed file using ‘css’ and ‘js’ keys: For example:

'app\config\AllAsset' => [
'js' => 'js/all-{hash}.js',
'css' => 'css/all-{hash}.css',
'depends' => [ ... ],
]

File names can contain placeholder “{hash}”, which will be filled by the hash of the resulting file.

You may specify several target bundles in order to compress different groups of assets. In this case you should use ‘depends’ key to specify, which bundles should be covered with particular target bundle. You may leave ‘depends’ to be empty for single bundle, which will compress all remaining bundles in this case. For example:

'allShared' => [
'js' => 'js/all-shared-{hash}.js',
'css' => 'css/all-shared-{hash}.css',
'depends' => [
// Include all assets shared between 'backend' and 'frontend'
'yii\web\YiiAsset',
'app\assets\SharedAsset',
],
],
'allBackEnd' => [
'js' => 'js/all-{hash}.js',
'css' => 'css/all-{hash}.css',
'depends' => [
// Include only 'backend' assets:
'app\assets\AdminAsset'
],
],
'allFrontEnd' => [
'js' => 'js/all-{hash}.js',
'css' => 'css/all-{hash}.css',
'depends' => [], // Include all remaining assets
],
public function actionCompress(string $configFile, string $bundleFile): mixed

Combines and compresses the asset files according to the given configuration.

During the process new asset bundle configuration file will be created. You should replace your original asset bundle configuration with this file in order to use compressed files.

Parameters

ParameterTypeDescription
$configFilestringConfiguration file name.
$bundleFilestringOutput asset bundles configuration file name.

Returns

mixed

public function actionTemplate(string $configFile): int

Creates template of configuration file for actionCompress().

Parameters

ParameterTypeDescription
$configFilestringOutput file name.

Returns

int: CLI exit code

Throws

public function combineCssFiles(array $inputFiles, string $outputFile): mixed

Combines CSS files into a single one.

Parameters

ParameterTypeDescription
$inputFilesarraySource file names.
$outputFilestringOutput file name.

Returns

mixed

Throws

public function combineJsFiles(array $inputFiles, string $outputFile): mixed

Combines JavaScript files into a single one.

Parameters

ParameterTypeDescription
$inputFilesarraySource file names.
$outputFilestringOutput file name.

Returns

mixed

Throws

public function getAssetManager(): yii\web\AssetManager

Returns the asset manager instance.

Returns

yii\web\AssetManager: Asset manager instance.

Throws

public function setAssetManager(yii\web\AssetManager|array $assetManager): mixed

Sets asset manager instance or configuration.

Parameters

ParameterTypeDescription
$assetManageryii\web\AssetManager|arrayAsset manager instance or its array configuration.

Returns

mixed

Throws

protected function adjustCssUrl(string $cssContent, string $inputFilePath, string $outputFilePath): string

Adjusts CSS content allowing URL references pointing to the original resources.

Parameters

ParameterTypeDescription
$cssContentstringSource CSS content.
$inputFilePathstringInput CSS file name.
$outputFilePathstringOutput CSS file name.

Returns

string: Adjusted CSS content.

protected function adjustDependency(yii\web\AssetBundle[] $targets, yii\web\AssetBundle[] $bundles): yii\web\AssetBundle[]

Adjust dependencies between asset bundles in the way source bundles begin to depend on output ones.

Parameters

ParameterTypeDescription
$targetsyii\web\AssetBundle[]Output asset bundles.
$bundlesyii\web\AssetBundle[]Source asset bundles.

Returns

yii\web\AssetBundle[]: Output asset bundles.

protected function buildTarget(yii\web\AssetBundle $target, string $type, yii\web\AssetBundle[] $bundles): mixed

Builds output asset bundle.

Parameters

ParameterTypeDescription
$targetyii\web\AssetBundleOutput asset bundle
$typestringEither ‘js’ or ‘css’.
$bundlesyii\web\AssetBundle[]Source asset bundles.

Returns

mixed

Throws

protected function compressCssFiles(array $inputFiles, string $outputFile): mixed

Compresses given CSS files and combines them into the single one.

Parameters

ParameterTypeDescription
$inputFilesarrayList of source file names.
$outputFilestringOutput file name.

Returns

mixed

Throws

protected function compressJsFiles(array $inputFiles, string $outputFile): mixed

Compresses given JavaScript files and combines them into the single one.

Parameters

ParameterTypeDescription
$inputFilesarrayList of source file names.
$outputFilestringOutput file name.

Returns

mixed

Throws

protected function loadBundles(string[] $bundles): yii\web\AssetBundle[]

Creates full list of source asset bundles.

Parameters

ParameterTypeDescription
$bundlesstring[]List of asset bundle names

Returns

yii\web\AssetBundle[]: List of source asset bundles.

protected function loadConfiguration(string $configFile): mixed

Applies configuration from the given file to self instance.

Parameters

ParameterTypeDescription
$configFilestringConfiguration file name.

Returns

mixed

Throws

protected function loadDependency(yii\web\AssetBundle $bundle, array &$result): mixed

Loads asset bundle dependencies recursively.

Parameters

ParameterTypeDescription
$bundleyii\web\AssetBundleBundle instance
$resultarrayAlready loaded bundles list.

Returns

mixed

Throws

protected function loadTargets(array $targets, yii\web\AssetBundle[] $bundles): yii\web\AssetBundle[]

Creates full list of output asset bundles.

Parameters

ParameterTypeDescription
$targetsarrayOutput asset bundles configuration.
$bundlesyii\web\AssetBundle[]List of source asset bundles.

Returns

yii\web\AssetBundle[]: List of output asset bundles.

Throws

protected function registerBundle(yii\web\AssetBundle[] $bundles, string $name, array &$registered): mixed

Registers asset bundles including their dependencies.

Parameters

ParameterTypeDescription
$bundlesyii\web\AssetBundle[]Asset bundles list.
$namestringBundle name.
$registeredarrayStores already registered names.

Returns

mixed

Throws

protected function saveTargets(yii\web\AssetBundle[] $targets, string $bundleFile): mixed

Saves new asset bundles configuration.

Parameters

ParameterTypeDescription
$targetsyii\web\AssetBundle[]List of asset bundles to be saved.
$bundleFilestringOutput file name.

Returns

mixed

Throws