AssetWidget.php 1.65 KB
<?php
    /**
     * Created by PhpStorm.
     * User: timur
     * Date: 19.06.17
     * Time: 14:20
     */
    
    namespace frontend\widgets;

    use yii\base\InvalidConfigException;
    use yii\base\Widget;
    use yii\helpers\Html;
    use yii\web\AssetBundle;

    class AssetWidget extends Widget
    {
        public $assets = [];
    
        public function init()
        {
            parent::init();
            if(!empty($this->assets) && !is_array($this->assets)) {
                throw new InvalidConfigException('Assets must be an array');
            }
        }
    
        public function run()
        {
            if(!empty($this->assets)) {
                $assets = $this->assets;
                $bundles = $this->view->assetBundles;
                foreach ($assets as $asset) {
                    if(array_key_exists($asset, $bundles)) {
                        /**
                         * @var AssetBundle $bundle
                         */
                        $bundle = $bundles[$asset];
                        foreach ($bundle->css as $item) {
                            if(isset((new $asset)->sourcePath)){
                                $QQQ = \Yii::$app->assetManager->publish(
                                    (new $asset)->sourcePath."/".$item,
                                    []
                                );
                                $item = $QQQ[1]; // [0] - full path, [1] - /assets/...
                            }
                            echo Html::cssFile($item);
                        }
                        $bundle->css = [];
                    }
                }
            }
        }
    }