2016-06-24 2 views
0

프로젝트 요구 사항 Yii2와 함께 제공되는 jQuery와 다른 버전을 사용해야합니다. 그런 다음Yii 2 및 jQuery

'assetManager' => [ 
     'bundles' => [ 
      // you can override AssetBundle configs here  
      'yii\web\JqueryAsset' => [ 
       'sourcePath' => null, 
       'js' => [] 
      ],   
     ], 
    ], 

내가 AppAsset로 이동 :

class AppAsset extends AssetBundle 
{ 
    public $sourcePath = "@app/themes/v1/assets"; 

    public $jsOptions = [ 'position' => \yii\web\View::POS_END ]; 

    public $js = [ 
     "js/lib/jquery/jquery-1.9.1.js", 

    ]; 
} 

그러나 이것은 하나의 큰 문제 yii.validation 후 JQuery와로드 등 제공 :

</script><script src="/assets/5b466ff1/yii.js?v=1465857632"></script> 
<script src="/assets/5b466ff1/yii.validation.js?v=1465857632"></script> 
<script src="/assets/5b466ff1/yii.activeForm.js?v=1465857632"></script> 
<script src="/assets/98d185b3/js/lib/jquery/jquery-1.9.1.js?v=1466702133"></script> 
을 나는 사용하여 비활성화 할 수 있습니다 알고

일시적인 해결책은 POS_END를 POS_HEAD로 변경하지만 그 점은 SEO 페이지에 영향을 줍니까? 내가 아는 한 머리에 js를로드하는 것은 나쁜 습관으로 간주됩니다.

그래서 제 질문은 :

어떻게 yii.validation 등 전 POS_END 및로드를 사용하여 내 테마 자산에서 jQuery를로드 할 수 있습니다?

가능성은 web/js/jquery.js에 추가하는 것이지만 자산 번들에 보관하는 것이 좋습니다.

아이디어가 있으십니까?

업데이트 : AppAsset이 추가가

나 주제 자체에 제어 할 수 있습니다. 글로벌 구성을 수정하는 것보다 깔끔합니다.

public function init() 
    { 
     parent::init(); 

     Yii::$app->assetManager->bundles['yii\\web\\JqueryAsset'] = [ 
      'js' => ['lib/jquery/jquery-1.9.1.js'], 
      'sourcePath' => '@app/themes/v1/assets/js' 
     ]; 

    } 

답변

1

그냥로 구성 코드를 변경하지 :

'assetManager' => [ 
     'bundles' => [ 
      'yii\web\JqueryAsset' => [ 
       'js' => ['lib/jquery/jquery-1.9.1.js'], 
       'sourcePath' => '@app/themes/v1/assets/js' 
      ] 
     ] 
    ] 

AppAsset

class AppAsset extends AssetBundle 
{ 
    public $sourcePath = "@app/themes/v1/assets"; 
    public $jsOptions = [ 'position' => \yii\web\View::POS_END ]; 
    public $js = [ 
    //"js/lib/jquery/jquery-1.9.1.js" Not Required 
    ]; 
} 
+0

그래서 간단!에 jquery을 정의 할 필요, 나는 그것을 시도하지 않았다. 감사!! – Eduardo