Yii2 Uygulamaya JavaScript / jQuery Eklemek




        Bir zamandır Yii ile değil JavaScript ve jQuery ile uğraştım. Uğraştığım bu konuları Yii2 uygulamama entegre etmek istedim fakat bazı sorunlarla karşılaştım. Bu yazımda da yapılması gerekenleri, karşılaştığım sorunları ve çözümlerini anlatacağım. Yazının daha çok anlaşılması için bir miktar Yii2 bilgisi gerekmektedir.

        Aslında basit bir işlem fakat herhangi bir ayar yapmadıysanız Yii2'nin yapısı gereği kesin olarak bir hatayla karşılaşıyorsunuz. Nedir bu hata?

        Hatanın adı: "Uncaught Reference Error: jQuery is not defined". Yii2; scriptleri (jQuery gibi..) sayfanın sonuna ekler. Yii2 bunun böyle olmasını kendisi istemiştir ve böyle tasarlanmıştır. Ama bu durum jQuery'nin sizin script'lerinizden daha sonra yükleneceği anlamına gelir. Bu yüzden siz komutları çalıştırdığınızda jQuery tanımlı olmadığı için bu hatayı alırsınız. Bu hatanın çözümü için jQuery kütüphanenizi ve JavaScript kodlarınızı uygulamanıza aşağıdaki gibi entegre etmek yeterli olacaktır.
  • İlk olarak herhangi bir jQuery kütüphanesi eklemek istiyorsak o kütüphaneyi uygulama_adi/assets/ dizinin içerisine kopyalıyoruz. 
  •  Daha sonra uygulama_adi/assets/AppAssets.php dosyasını açıyoruz ve 
    public $js = [

    ];
          kısmının içerisine kütüphanenin ismini yazıyoruz;

    '/uygulama_adi/assets/script.js',

  • Bu işlemleriden sonra uygulama_adi/views/konroller_adi/dosya.php dosyasına taglerinin arasına dosyamızı belirtip kodumuzu yazıyoruz. Bunun için iki yapı kullanıyoruz bunlar;
    • registerJsFile(); Bu komutla .js dosyamızı belirliyoruz.
    • registerJs(); Bu komut ise kodlarımızın çalıştırılmasını sağlar.
  •  Kullanım şekline bir örnek;
        $this->registerJsFile('script.js');

        $this->registerJs('/*kod kısmı*/');
    ?>
  •  Ayrıca bağımlılıkları belirlemek için ise registerJsFile(); kısmını şöyle düzenliyoruz:
    $this->registerJsFile(
        ''script.js'',
        ['\backend\assets\AppAsset'],
        ['position' => '\yii\web\View::POS_END']
    );
        Her şey yolunda gitmişse hiç hata almadan JavaScript ve jQuery kodlarınız çalışacaktır.
İyi çalışmalar dilerim.