在Yii 1中,可以使用以下内容发布资产
Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('ext.MyWidget.assets'));
如何在Yii2中的窗口小部件中发布资源?
答案 0 :(得分:3)
答案 1 :(得分:2)
感谢您的帮助,这是解决问题的最终代码:
list($path, $webPath) = Yii::$app->getAssetManager()->publish(__DIR__."/assets);
$this->getView()->registerJsFile($webPath);
答案 2 :(得分:2)
最简单的方法:
app\assets\AppAsset::register($this->getView());
这与您在视图中发布它的方式相同。
答案 3 :(得分:1)
几乎相同:
Yii::$app->getAssetManager()->publish('/path/to/assets'); // you can use an alias
http://www.yiiframework.com/doc-2.0/yii-web-assetmanager.html#publish()-detail
但是如果你想发布css和js,最好创建一个资产包,在这里阅读更多内容:http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#defining-asset-bundles
答案 4 :(得分:1)
在Yii2中,AssetBandle应该是唯一的,因为它可以避免在加载网页上的相同文件时出现重复。在Yii1这是一个问题。 这里几乎所有建议的答案都没有解决这个问题。
这就是为什么答案应该是这样的:
您应创建新的资产包(yii \ web \ AssetBundle),其唯一名称可在应用程序中使用的所有资产包中全局标识它。 fully qualified class name将检查唯一名称。使用后遵循:
YourAsset::register($view);
或
$view->registerAssetBundle(InterrogateDeviceButtonAsset::class);
答案 5 :(得分:-1)
我已经在我的BaseController.php
中实现了这个功能,这个功能由我的所有控制器扩展。这是发布单个资产的功能。
/**
* Publish an asset and return url
*
* @param $src
*
* @return mixed
*/
public function publishAsset( $src ) {
$path = Yii::getAlias( $src );
if ( ! $this->assetManager ) {
$this->assetManager = new AssetManager();
}
$return = $this->assetManager->publish( $path );
return $return[1];
}
我唯一想要调整的就是可以包含完整的URL方案。我在Yii2 AssetManager published path include URL scheme
发布了我的问题