Yii2 Framework kullanırken bazen 2 defa jquery dosyası sayfaya dahil olabiliyor. Birincisi Yii2'nin otomatik eklediği dosya iken ikincisi kullandığınız temaya ait dosya olabiliyor. Bunun sonucu olarak jQuery(...).yiiGridView is not a function hatası alınabiliyor.
Bu problemi aşmak için ya Yii2'nin jquery dosyasını kaldıracağız ya da temanın dosyasını kaldıracağız. Ancak hangisini kullanırsak kullanalım sayfada head etiketleri içine jquery dosyasını dahil etmeliyiz. İstedğiniz birini seçebilirsiniz.
1-Yii2 Jquery Dosyasını İptal Etme
Yii2 Jquery dosyasını iptal etmek için backend/config/main.php
dosyasında components dizisi içine aşağıdaki kodları ekleyebilirsiniz:
'components' => [
....
'assetManager' => [
'bundles' => [
'yii\web\JqueryAsset' => false
],
],
]
1.1 Yii2 Jquery Dosyasını İptal Etme
Daha sonra backend/web/AppAssets
dosyası içinde temanın jquery dosyasını aşağıdaki gibi ekleyebilirsiniz. Bu şekilde temanın jquery dosyası sayfanın head etiketleri içine dahil olmuş olacak.
public $js = [
//"assets/plugins/global/plugins.bundle.js",
["assets/plugins/global/plugins.bundle.js",'position' => \yii\web\View::POS_HEAD],
....
]
2-Yii2 Jquery Dosyasını Yükleyip Tema Jquery Dosyasını İptal Etme
Yii2 Jquery dosyasını head etiketleri içine eklemek için backend/config/main.php
dosyasında components dizisi içine aşağıdaki kodları ekleyebilirsiniz:
'components' => [
....
'assetManager' => [
'bundles' => [
'yii\web\JqueryAsset' => [
'jsOptions' => [ 'position' => \yii\web\View::POS_HEAD ],
],
//'yii\web\JqueryAsset' => false //kapatmak için başka bir yöntem
],
],
]
2.1 Tema Jquery Dosyasını İptal Etme
Daha sonra temanın Jquery dosyasını aşağıdaki gibi iptal edebilirsiniz.
public $js = [
"assets/plugins/global/plugins.bundle.js",
//["assets/plugins/global/plugins.bundle.js",'position' => \yii\web\View::POS_HEAD],
]