2014-11-22 15 views
6

में jQuery जैसे कोर स्क्रिप्ट लोड हो रहा है मुझे Yii 2 में jQuery या अन्य कोर स्क्रिप्ट लोड करने का तरीका जानने में कठिनाई हो रही है।वाईआई 2

Yii 1 में ऐसा लग रहा था इस तरह से किया गया था:

<?php Yii::app()->clientScript->registerCoreScript("jquery"); ?> 

Yii 2 में, $ एप्लिकेशन तो ऊपर स्वाभाविक रूप से काम नहीं करता है, Yii की संपत्ति है, न कि तरीका है, लेकिन करने के लिए इसे बदलने:

Getting unknown property: yii\web\Application::clientScript 

मैं Yii 2 लो के बारे में किसी भी प्रलेखन नहीं मिल सका:

<?php Yii::$app->clientScript->registerCoreScript("jquery"); ?> 

इस त्रुटि का उत्पादन कोर लिपियों ading, तो मैं नीचे की कोशिश की:

<?php $this->registerJsFile(Yii::$app->request->baseUrl . '/js/jquery.min.js', array('position' => $this::POS_HEAD), 'jquery'); ?> 

इस जबकि सिर में jQuery लोड करता है, jQuery का एक दूसरा संस्करण भी जब जरूरत Yii से भरी हुई है और इसलिए संघर्ष त्रुटियों का कारण बनता।

इसके अतिरिक्त, मैं jQuery के वाईआई के कार्यान्वयन का उपयोग नहीं करना चाहता, मैं अपना खुद का रखरखाव करना पसंद करूंगा और इसलिए मैं ऐसा कर रहा हूं।

मैं jQuery की आवश्यकता के बिना डुप्लिकेट प्रतियों को लोड करने के बिना jQuery और अन्य कोर फ़ाइलों को कैसे लोड कर सकता हूं?

+0

आपको http://stackoverflow.com/questions/26734385/yii2-disable-bootstrap-js-jquery-and-css/26734892#26734892 और http://www.yiiframework.com/doc- 2.0/गाइड-संरचना-assets.html उपयोगी। –

उत्तर

9

Yii2 के डिफ़ॉल्ट संपत्ति आप इस सवाल का उल्लेख कर सकते हैं निष्क्रिय करने के लिए आदेश में:

Yii2 disable Bootstrap Js, JQuery and CSS

वैसे भी, Yii2 का परिसंपत्ति प्रबंधन तरीका Yii 1.x.x से अलग है। सबसे पहले आपको AssetBundle बनाना होगा। अपने दृश्यों पर उन्हें प्रकाशित करने के लिए फिर

namespace app\assets\YourAssetBundleName; 
use yii\web\AssetBundle; 

class YourAssetBundleName extends AssetBundle 
{ 
public $basePath = '@webroot'; 
public $baseUrl = '@web'; 
public $css = [ 
    'path/file.css',//or files 
]; 
public $js=[ 
    'path/file.js' //or files 
]; 

//if this asset depends on other assets you may populate below array 
public $depends = [ 
]; 
} 

,: आधिकारिक गाइड उदाहरण के रूप में, `` में नीचे की तरह एक परिसंपत्ति समूह बनाने

use app\assets\YourAssetBundleName; 
YourAssetBundleName::register($this); 

कौन सा $this वर्तमान दृश्य वस्तु को दर्शाता है।


दूसरी ओर, यदि आप केवल एक दृश्य में JS फ़ाइलों रजिस्टर करने की आवश्यकता है, तो आप उपयोग कर सकते हैं:

$this->registerJsFile('path/to/file.js'); 

yii\web\View::registerJsFile()

और अगर आप केवल में CSS फ़ाइलों रजिस्टर करने की आवश्यकता एक दृश्य, आप इसका उपयोग कर सकते हैं:

$this->registerCssFile('path/to/file.css'); 

yii\web\View::registerCssFile()

2

तुम इतनी तरह लोड होने से कोर jQuery निकाल सकते हैं:

config/web.php

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

क्या यह करने का एकमात्र तरीका है? वाईआई 1 के समान कोई रास्ता नहीं है? – Brett