2015-04-05 81 views
1

Yii2應用程序將js文件移至前端/資產中的AppAsset.php文件。但是,@bower不會解析爲別名。yii2 @bower無法從資產捆綁文件中解析

namespace frontend\assets; 

use yii\web\AssetBundle; 

/** 
* @author Qiang Xue <[email protected]> 
* @since 2.0 
*/ 
class AppAsset extends AssetBundle 
{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
     'css/site.css', 
    ]; 
    public $js = [ 
     'js/script.js', 
     '@bower/angular/angular.min.js', 
     '@bower/angular-ui-router/release/angular-ui-router.min.js', 
     '@bower/angular-bootstrap/ui-bootstrap.min.js' 
    ]; 
    public $depends = [ 
     'yii\web\YiiAsset', 
     'yii\bootstrap\BootstrapAsset', 
     'yii\web\JQueryAsset', 
    ]; 

}

瀏覽器上http://localhost.lq/@bower/angular/angular.min.js

+0

'@ bower'定義在[源代碼](https://github.com/yiisoft/yii2/blob/master/framework/base/Application.php#L456) – cnvzmxcvmcx 2015-04-05 05:45:25

回答

3

給予404您應該創建新的資產,並設置$sourcePath這樣的代碼將會被默認定義

class AngularAsset extends AssetBundle 
    { 
     public $sourcePath = '@bower/angular'; 
     public $js = [ 

      'angular.min.js', 
     ]; 
     public $depends = [ 
     'frontend\assets\AppAsset', 
     ]; 
    } 

    class AngularRouterAsset extends AssetBundle 
     { 
      public $sourcePath = '@bower/angular-ui-router'; 
      public $js = [ 
       'release/angular-ui-router.min.js', 
      ]; 
      public $depends = [ 
      'frontend\assets\AppAsset', 
      ]; 
     } 

class AngularBootstrapAsset extends AssetBundle 
     { 
      public $sourcePath = '@bower/angular-ui-router'; 
      public $js = [ 
       'release/ui-bootstrap.min.js', 
      ]; 
      public $depends = [ 
      'frontend\assets\AppAsset', 
      ]; 
     } 
    class AngularAllAsset extends AssetBundle 
      { 
       public $sourcePath = '@bower/angular-ui-router'; 
       public $js = [ 
        'js/script.js', 
       ]; 
       public $depends = [ 
       'frontend\assets\AppAsset', 
       'frontend\assets\AngularAsset', 
       'frontend\assets\AngularRouterAsset', 
       'frontend\assets\AngularBootstrapAsset', 
       ]; 
      }