没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\web\AssetManager

继承yii\web\AssetManager » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/web/AssetManager.php

AssetManager 管理资源包的配置和加载。

AssetManager 已经默认在 yii\web\Application 里配置到了应用配置。 你可以通过 Yii::$app->assetManager 访问该实例

你仍可以修改其配置,在应用配置的 components 里添加数组, 就像这样:

'assetManager' => [
    'bundles' => [
        // 在这里重新配置资源包
    ],
]

关于 AssetManager 的更多使用参考,请查看 前端资源

公共属性

隐藏继承的属性

属性类型描述被定义在
$afterCopy callback PHP 回调:在复制每个子目录或文件成功之后调用。 此选项仅在发布目录时使用。回调的形式和 $beforeCopy 一样。 这个回调作为参数 afterCopy 传递给 yii\helpers\FileHelper::copyDirectory() yii\web\AssetManager
$appendTimestamp boolean 是否将时间戳附加到每个已发布资源的 URL 上。 如果为 true,已发布资源的 URL 就会像 /path/to/asset?v=timestamp, 其中 timestamp 是已发布文件的最后修改时间。 通常情况下,你为资源启用 HTTP 缓存时,可将此属性设置为 true, 因为它会在你更新资源文件时刷新缓存。 yii\web\AssetManager
$assetMap array 源资源文件(键)和目标资源文件(值)的映射。 此属性用于支持在某些资源包中修复不正确的资源文件路径。 当资源包在视图中注册时,其 cssjs 中的每个相对资源文件 都会被这个映射检查。如果找到相应的键, 将作为资源文件的最后部分(如果可用,以 yii\web\AssetBundle::$sourcePath 为前缀), 相应的值将替换资源,并被注册到视图中。 例如,资源文件 `my/path/to/jquery. yii\web\AssetManager
$basePath string 保存已发布的资源文件的根目录。 yii\web\AssetManager
$baseUrl string 已发布资源文件可以访问的基链接。 yii\web\AssetManager
$beforeCopy callback PHP 回调:在复制每个子目录或文件之前调用。 此选项仅在发布目录时使用。如果回调返回 false, 则复制子目录或文件的操作将被取消。 回调的形式:function ($from, $to),其中 $from 是子目录或者 要复制的文件,而 $to 是复制目标。 这个回调作为参数 beforeCopy 传递给 yii\helpers\FileHelper::copyDirectory() yii\web\AssetManager
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$bundles array|boolean 资源包配置列表。提供此属性是为了自定义资源包。 在 getBundle() 方法里,当一个资源包被加载,如果它在此处有相应的配置, 这些配置将应用于这个资源包。 数组的键是资源包名称,通常是资源包类名,没有反斜杠的那种。 数组的值是相应的配置,如果值为 false,则意味这 这个资源包被禁用,getBundle() 返回为 null。 如果此属性为 false,则意味全部的资源包都被禁用, getBundle() 会全部返回 null。 以下示例显示如何禁用 Bootstrap 小部件去使用 bootstrap 的 CSS。 (由于你想使用自己的样式): `php [ 'yii\bootstrap\BootstrapAsset' => [ 'css' => [], ], ] ` yii\web\AssetManager
$converter yii\web\AssetConverterInterface 资源编译器。 yii\web\AssetManager
$dirMode integer 新创建的资源目录的权限。 此值将被 PHP 函数 chmod() 所使用。不设掩码(umask)。 默认值为 0775,意味着目录可以被拥有者和拥有组别读写, 但是其他用户只读。 yii\web\AssetManager
$fileMode integer 新发布的资源文件的权限。 此值将被 PHP 函数 chmod() 所使用。不设掩码(umask)。 如果未设置,权限将由当前环境确定。 yii\web\AssetManager
$forceCopy boolean 当目标目录已存在,正发布的目录是否应发布。 此选项仅在发布目录时使用。 你可能希望在开发阶段将其设置为 true 以确保已发布目录始终是最新的。 不要在生产服务器设置此属性, 它会显着降低性能。 yii\web\AssetManager
$hashCallback callable PHP 回调:该回调函数将被调用以生成资源目录的哈希值。 回调的形式如下: function ($path) 其中 $path 资源路径。请注意,$path 可以是资源目录,也可以是单个文件。 对于在 url() 中使用的相对路径的 CSS 文件, 哈希实现应该使用文件的目录路径而不是复制中的资源文件的相对路径。 如果未设置,资源管理器将在 hash 方法中使用 CRC32 和 filemtime。 用 MD4 哈希的一个实现例子: `php function ($path) { return hash('md4', $path); } ` yii\web\AssetManager
$linkAssets boolean 是否使用符号链接发布资源文件。默认为 false,意味着 资源文件件被复制到 $basePath。使用符号链接有这样的好处:发布的资源永远和 源文件一致,并且不需要复制操作。 这在开发过程中特别有用。 但是,使用符号链接对主机环境有特殊要求。 特别是,在 Linux/Unix,和 Windows Vista/2008 或更高版本上才支持符号链接。 此外,需要正确配置某些 Web 服务器,以便可以访问链接过的资源能被 Web 用户访问。 例如,对于 Apache Web 服务器,应添加以下的配置指令到 Web 文件夹: `apache Options FollowSymLinks ` yii\web\AssetManager

公共方法

隐藏继承的方法

方法描述被定义在
__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
__construct() Constructor. yii\base\BaseObject
__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
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
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() Returns the fully qualified name of this class. yii\base\BaseObject
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
getAssetPath() 返回给定资源的实际文件路径。 yii\web\AssetManager
getAssetUrl() 返回给定资源的实际 URL。 实际的 URL 是通过将指定的资源路径,拼接上 yii\web\AssetBundle::$baseUrl 或者 yii\web\AssetManager::$baseUrl 前缀获得的。 yii\web\AssetManager
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getBundle() 返回所找的资源包对象。 yii\web\AssetManager
getConverter() 返回资源编译器。 yii\web\AssetManager
getPublishedPath() 返回文件的发布后的路径。 这个方法没有执行任何发布动作, 它仅仅告诉你这个文件或目录是否发布了,以及它发布到了哪里。 yii\web\AssetManager
getPublishedUrl() 返回文件的发布后的 URL 地址。 这个方法没有执行任何发布动作, 它仅仅告诉你这个文件或目录是否发布了,以及它发布到了哪里。 yii\web\AssetManager
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() 初始化组件 yii\web\AssetManager
off() Detaches an existing event handler from this component. yii\base\Component
on() Attaches an event handler to an event. yii\base\Component
publish() 发布文件或目录。 yii\web\AssetManager
setConverter() 设置资源编译器。 yii\web\AssetManager
trigger() Triggers an event. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述被定义在
hash() 给目录生成 CRC32 哈希值。 冲突会高于 MD5,但生成的哈希字符串要小得多。 yii\web\AssetManager
loadBundle() 根据名称加载资源包。 yii\web\AssetManager
loadDummyBundle() 按名称加载虚拟资源包。 yii\web\AssetManager
publishDirectory() 发布目录。 yii\web\AssetManager
publishFile() 发布文件。 yii\web\AssetManager
resolveAsset() yii\web\AssetManager

属性详情

$afterCopy 公共 属性

PHP 回调:在复制每个子目录或文件成功之后调用。 此选项仅在发布目录时使用。回调的形式和 $beforeCopy 一样。

这个回调作为参数 afterCopy 传递给 yii\helpers\FileHelper::copyDirectory()

public callback $afterCopy null
$appendTimestamp 公共 属性 (自版本 2.0.3 可用)

是否将时间戳附加到每个已发布资源的 URL 上。 如果为 true,已发布资源的 URL 就会像 /path/to/asset?v=timestamp, 其中 timestamp 是已发布文件的最后修改时间。 通常情况下,你为资源启用 HTTP 缓存时,可将此属性设置为 true, 因为它会在你更新资源文件时刷新缓存。

public boolean $appendTimestamp false
$assetMap 公共 属性

源资源文件(键)和目标资源文件(值)的映射。

此属性用于支持在某些资源包中修复不正确的资源文件路径。 当资源包在视图中注册时,其 cssjs 中的每个相对资源文件 都会被这个映射检查。如果找到相应的键, 将作为资源文件的最后部分(如果可用,以 yii\web\AssetBundle::$sourcePath 为前缀), 相应的值将替换资源,并被注册到视图中。 例如,资源文件 my/path/to/jquery.js 匹配了 jquery.js

请注意,目标资源文件必须为绝对 URL、相对于域名的 URL(以“/”开头)或者是 相对于 $baseUrl$basePath 的路径。

在以下示例中,任何以 jquery.min.js 结尾的资源都会被替换成 jquery/dist/jquery.js, 其相对路径是 $baseUrl$basePath

[
    'jquery.min.js' => 'jquery/dist/jquery.js',
]

你还可以用别名指定映射的值,例如:

[
    'jquery.min.js' => '@web/js/jquery/jquery.js',
]
public array $assetMap = []
$basePath 公共 属性

保存已发布的资源文件的根目录。

public string $basePath '@webroot/assets'
$baseUrl 公共 属性

已发布资源文件可以访问的基链接。

public string $baseUrl '@web/assets'
$beforeCopy 公共 属性

PHP 回调:在复制每个子目录或文件之前调用。 此选项仅在发布目录时使用。如果回调返回 false, 则复制子目录或文件的操作将被取消。

回调的形式:function ($from, $to),其中 $from 是子目录或者 要复制的文件,而 $to 是复制目标。

这个回调作为参数 beforeCopy 传递给 yii\helpers\FileHelper::copyDirectory()

public callback $beforeCopy null
$bundles 公共 属性

资源包配置列表。提供此属性是为了自定义资源包。 在 getBundle() 方法里,当一个资源包被加载,如果它在此处有相应的配置, 这些配置将应用于这个资源包。

数组的键是资源包名称,通常是资源包类名,没有反斜杠的那种。 数组的值是相应的配置,如果值为 false,则意味这 这个资源包被禁用,getBundle() 返回为 null。

如果此属性为 false,则意味全部的资源包都被禁用, getBundle() 会全部返回 null。

以下示例显示如何禁用 Bootstrap 小部件去使用 bootstrap 的 CSS。 (由于你想使用自己的样式):

[
    'yii\bootstrap\BootstrapAsset' => [
        'css' => [],
    ],
]
public array|boolean $bundles = []
$converter 公共 属性

资源编译器。

$dirMode 公共 属性

新创建的资源目录的权限。 此值将被 PHP 函数 chmod() 所使用。不设掩码(umask)。 默认值为 0775,意味着目录可以被拥有者和拥有组别读写, 但是其他用户只读。

public integer $dirMode 0775
$fileMode 公共 属性

新发布的资源文件的权限。 此值将被 PHP 函数 chmod() 所使用。不设掩码(umask)。 如果未设置,权限将由当前环境确定。

public integer $fileMode null
$forceCopy 公共 属性

当目标目录已存在,正发布的目录是否应发布。 此选项仅在发布目录时使用。 你可能希望在开发阶段将其设置为 true 以确保已发布目录始终是最新的。 不要在生产服务器设置此属性, 它会显着降低性能。

public boolean $forceCopy false
$hashCallback 公共 属性 (自版本 2.0.6 可用)

PHP 回调:该回调函数将被调用以生成资源目录的哈希值。 回调的形式如下:

function ($path)

其中 $path 资源路径。请注意,$path 可以是资源目录,也可以是单个文件。 对于在 url() 中使用的相对路径的 CSS 文件, 哈希实现应该使用文件的目录路径而不是复制中的资源文件的相对路径。

如果未设置,资源管理器将在 hash 方法中使用 CRC32 和 filemtime。

用 MD4 哈希的一个实现例子:

function ($path) {
    return hash('md4', $path);
}
public callable $hashCallback null
$linkAssets 公共 属性

是否使用符号链接发布资源文件。默认为 false,意味着 资源文件件被复制到 $basePath。使用符号链接有这样的好处:发布的资源永远和 源文件一致,并且不需要复制操作。 这在开发过程中特别有用。

但是,使用符号链接对主机环境有特殊要求。 特别是,在 Linux/Unix,和 Windows Vista/2008 或更高版本上才支持符号链接。

此外,需要正确配置某些 Web 服务器,以便可以访问链接过的资源能被 Web 用户访问。 例如,对于 Apache Web 服务器,应添加以下的配置指令到 Web 文件夹:

Options FollowSymLinks
public boolean $linkAssets false

方法详情

getAssetPath() 公共 方法

返回给定资源的实际文件路径。

public string|false getAssetPath($bundle, $asset)
$bundle yii\web\AssetBundle

资源文件所属的资源包

$asset string

资源路径。必须是 yii\web\AssetBundle::$js 或者 yii\web\AssetBundle::$css 列表里的资源文件。

return string|false

实际的文件路径,如果所给资源是是一个绝对 URL,则返回 false

getAssetUrl() 公共 方法

返回给定资源的实际 URL。 实际的 URL 是通过将指定的资源路径,拼接上 yii\web\AssetBundle::$baseUrl 或者 yii\web\AssetManager::$baseUrl 前缀获得的。

public string getAssetUrl($bundle, $asset)
$bundle yii\web\AssetBundle

资源文件所属的资源包

$asset string

资源路径。必须是 yii\web\AssetBundle::$js 或者 yii\web\AssetBundle::$css 列表里的资源文件。

return string

给定资源的实际 URL。

getBundle() 公共 方法

返回所找的资源包对象。

这个方法首先会在 $bundles 你查找。如找不到 它会将 $name 当作资源包的类,并创建一个新实例。

public yii\web\AssetBundle getBundle($name, $publish true)
$name string

资源包的类名称(没有反斜杠前缀)

$publish boolean

是否在返回资源包之前发布资源包中的资源文件。 如果将此设置为 false,则必须手动调用 AssetBundle::publish() 来发布资源文件。

return yii\web\AssetBundle

资源包对象实例

throws yii\base\InvalidConfigException

如果 $name 没有指向任何合法资源包

getConverter() 公共 方法

返回资源编译器。

public yii\web\AssetConverterInterface getConverter()
return yii\web\AssetConverterInterface

资源编译器。

getPublishedPath() 公共 方法

返回文件的发布后的路径。 这个方法没有执行任何发布动作, 它仅仅告诉你这个文件或目录是否发布了,以及它发布到了哪里。

public string|false getPublishedPath($path)
$path string

要发布的资源文件或目录

return string|false

String:已发布的路径。False:如果文件或者目录不存在。

getPublishedUrl() 公共 方法

返回文件的发布后的 URL 地址。 这个方法没有执行任何发布动作, 它仅仅告诉你这个文件或目录是否发布了,以及它发布到了哪里。

public string|false getPublishedUrl($path)
$path string

要发布的资源文件或目录

return string|false

String:已发布的 URL。False:如果文件或者目录不存在。

hash() 受保护 方法

给目录生成 CRC32 哈希值。 冲突会高于 MD5,但生成的哈希字符串要小得多。

protected string hash($path)
$path string

将要被哈希的字符串。

return string

哈希字符串

init() 公共 方法

初始化组件

public void init()
throws yii\base\InvalidConfigException

如果 $basePath 无效

loadBundle() 受保护 方法

根据名称加载资源包。

protected yii\web\AssetBundle loadBundle($name, $config = [], $publish true)
$name string

资源包名称

$config array

资源包对象的配置

$publish boolean

是否发布资源包

throws yii\base\InvalidConfigException

如果配置无效

loadDummyBundle() 受保护 方法

按名称加载虚拟资源包。

protected yii\web\AssetBundle loadDummyBundle($name)
$name string
publish() 公共 方法

发布文件或目录。

此方法将指定的文件或目录复制到 $basePath, 以便可以通过Web服务器访问它们。

资源文件将检查其修改时间以避免不必要的文件复制。

资源文件目录则会,其下的所有文件和子目录将以递归方式发布。 注意,如果 $forceCopy 为 false,则该方法仅检查目标文件夹是否存在, 以避免重复复制(这是非常昂贵的)。

默认情况下,以 "." 开头的目录,子目录和文件都不会被发布。 如果要更改此行为,可以设置 "beforeCopy" 选项, 如 $options 参数中所述。

Note:在极端场景下,可能会形成竞争条件,导致在创建已发布的资源文件的目录时, 产生非关键问题的一次性表现。(就是并发请求同时触发布的问题) 但可以完全避免这个问题, 先发一个 “请求”,以触发所有会调用 'publish()' 的资源的发布, 在应用程序部署阶段,在系统上线之前就先这么做。 关于此问题更多的讨论请查看: http://code.google.com/p/yii/issues/detail?id=2579

public array publish($path, $options = [])
$path string

要发布的资源文件或目录

$options array

发布目录时要应用的选项。 支持以下选项:

  • only:array,允许被复制的文件路径的匹配模式列表。
  • except:array,不允许被复制的文件路径的匹配模式列表。
  • caseSensitive:boolean,指定为 “only” 或 “except” 的匹配模式是否区分大小写。默认为 true。
  • beforeCopy:callback, 一个在复制每个子目录或文件之前调用的 PHP 回调。 如果设置了,则覆盖 $beforeCopy 属性。
  • afterCopy:callback, 在成功复制子目录或文件后调用的 PHP 回调。 如果设置了,则覆盖 $afterCopy 属性。
  • forceCopy:boolean, 如果目标目录要发布的文件已存在,是否要强制复制。 此选项仅在发布目录时使用。 如果设置了,则覆盖 $forceCopy 属性。
return array

已发布的目录或者文件的路径和 URL 地址。

throws yii\base\InvalidArgumentException

如果要发布的资源不存在。

publishDirectory() 受保护 方法

发布目录。

protected string[] publishDirectory($src, $options)
$src string

将要发布的目录

$options array

发布目录时要应用的选项。 支持以下选项:

  • only:array,允许被复制的文件路径的匹配模式列表。
  • except:array,不允许被复制的文件路径的匹配模式列表。
  • caseSensitive:boolean,指定为 “only” 或 “except” 的匹配模式是否区分大小写。默认为 true。
  • beforeCopy:callback, 一个在复制每个子目录或文件之前调用的 PHP 回调。 如果设置了,则覆盖 $beforeCopy 属性。
  • afterCopy:callback, 在成功复制子目录或文件后调用的 PHP 回调。 如果设置了,则覆盖 $afterCopy 属性。
  • forceCopy:boolean, 如果目标目录要发布的文件已存在,是否要强制复制。 此选项仅在发布目录时使用。 如果设置了,则覆盖 $forceCopy 属性。
return string[]

已发布的目录的路径和 URL 地址。

throws yii\base\InvalidArgumentException

如果要发布的资源不存在。

publishFile() 受保护 方法

发布文件。

protected string[] publishFile($src)
$src string

将要发布的资源文件

return string[]

已发布好的资源文件路径和 URL。

throws yii\base\InvalidArgumentException

如果要发布的资源不存在。

resolveAsset() 受保护 方法

protected string|boolean resolveAsset($bundle, $asset)
$bundle yii\web\AssetBundle
$asset string
setConverter() 公共 方法

设置资源编译器。

public void setConverter($value)
$value array|yii\web\AssetConverterInterface

资源编译器。可以是个 实现了 yii\web\AssetConverterInterface 的对象,也可以是 用来创建编译器对象的数组配置。