Browse Source

Added $publish parameter to AssetManager::getBundle().

tags/2.0.0-beta
Qiang Xue 11 years ago
parent
commit
b03b38fb0d
  1. 2
      framework/yii/base/View.php
  2. 2
      framework/yii/web/AssetBundle.php
  3. 10
      framework/yii/web/AssetManager.php

2
framework/yii/base/View.php

@ -552,7 +552,7 @@ class View extends Component
foreach($bundle->depends as $dep) { foreach($bundle->depends as $dep) {
$this->registerAssetFiles($dep); $this->registerAssetFiles($dep);
} }
$bundle->registerAssets($this); $bundle->registerAssetFiles($this);
unset($this->assetBundles[$name]); unset($this->assetBundles[$name]);
} }

2
framework/yii/web/AssetBundle.php

@ -133,7 +133,7 @@ class AssetBundle extends Object
* Registers the CSS and JS files with the given view. * Registers the CSS and JS files with the given view.
* @param \yii\base\View $view the view that the asset files are to be registered with. * @param \yii\base\View $view the view that the asset files are to be registered with.
*/ */
public function registerAssets($view) public function registerAssetFiles($view)
{ {
foreach ($this->js as $js) { foreach ($this->js as $js) {
if (strpos($js, '/') !== 0 && strpos($js, '://') === false) { if (strpos($js, '/') !== 0 && strpos($js, '://') === false) {

10
framework/yii/web/AssetManager.php

@ -95,10 +95,12 @@ class AssetManager extends Component
* it will treat `$name` as the class of the asset bundle and create a new instance of it. * it will treat `$name` as the class of the asset bundle and create a new instance of it.
* *
* @param string $name the class name of the asset bundle * @param string $name the class name of the asset bundle
* @param boolean $publish whether to publish the asset files in the asset bundle before it is returned.
* If you set this false, you must manually call `AssetBundle::publish()` to publish the asset files.
* @return AssetBundle the asset bundle instance * @return AssetBundle the asset bundle instance
* @throws InvalidConfigException if $name does not refer to a valid asset bundle * @throws InvalidConfigException if $name does not refer to a valid asset bundle
*/ */
public function getBundle($name) public function getBundle($name, $publish = true)
{ {
if (isset($this->bundles[$name])) { if (isset($this->bundles[$name])) {
if ($this->bundles[$name] instanceof AssetBundle) { if ($this->bundles[$name] instanceof AssetBundle) {
@ -111,8 +113,10 @@ class AssetManager extends Component
} else { } else {
$bundle = Yii::createObject($name); $bundle = Yii::createObject($name);
} }
/** @var AssetBundle $bundle */ if ($publish) {
$bundle->publish($this); /** @var AssetBundle $bundle */
$bundle->publish($this);
}
return $this->bundles[$name] = $bundle; return $this->bundles[$name] = $bundle;
} }

Loading…
Cancel
Save