2012-01-19 5 views
9

प्रकाशित करें मैं अपने वेब एप्लिकेशन के लिए वाईआईआई ढांचे का उपयोग कर रहा हूं। मेरे पास बाहरी जावा स्क्रिप्ट फ़ाइल पंजीकृत करने पर एक प्रश्न है।वाईआई - बाहरी जेएस फाइलों को शामिल करें, रजिस्टरस्क्रिप्ट फ़ाइल करें और

क्या कोई मेरी मदद कर सकता है?

  1. जावा स्क्रिप्ट फ़ाइल (जो फ़ोल्डर)
  2. मैं वहाँ रजिस्टर करने के लिए दो तरीके हैं देख पा रहे हैं कॉपी करने के लिए सबसे अच्छा स्थान क्या है कि बाहरी जावा स्क्रिप्ट फ़ाइल

    पहले दृष्टिकोण

    $baseUrl = Yii::app()->baseUrl; 
    $cs = Yii::app()->getClientScript(); 
    $cs->registerScriptFile($baseUrl.'/js/yourscript.js'); 
    

    दूसरा दृष्टिकोण

    $cs=Yii::app()->getClientScript(); 
    $cs->registerScriptFile(Yii::app()->getAssetManager()->publish('path/to/js')); 
    $cs->registerScript('id', 'your js here'); 
    

पहले दृष्टिकोण में मैं सीधे registerScriptFile के साथ पंजीयन और जावा स्क्रिप्ट फ़ाइल गुजर

दूसरा दृष्टिकोण मैं दर्ज की कर रहा हूँ में और स्क्रिप्ट का प्रकाशन कर रहा हूँ। इसका मतलब है कि यह संपत्ति फ़ोल्डरों की प्रतिलिपि बनाता है। (कृपया मुझे सही करें यदि मैं गलत हूं) और फिर अंतिम चरण क्या करता है, id और फिर java script file क्या है। ($cs->registerScript('id', 'your js here');)

मेरे मामले में मैं इसे किसी एक दृश्य से एक्सेस कर रहा हूं, इसलिए दूसरे दृष्टिकोण में यह संपत्ति फ़ोल्डर में प्रकाशित हो जाता है, अगर 10 क्लाइंट फ़ाइल को कॉल करते हैं तो यह 10 बार प्रकाशित होता है (क्योंकि मैं एक्सेस कर रहा हूं इसे दृश्य फ़ाइल से)

मैं थोड़ा उलझन में हूं।

आपका जवाब

सादर

किरण

+0

संभावित डुप्लिकेट [सीएसएस शामिल करें, वाईआई फ्रेमवर्क में जावास्क्रिप्ट फ़ाइल] (http://stackoverflow.com/questions/1998449/in क्लाउड-सीएसएस-जावास्क्रिप्ट-फ़ाइल-इन-वाईआई-फ्रेमवर्क) – bummi

उत्तर

15

वाईआई संपत्ति फ़ोल्डर आमतौर पर विजेट और वाईआई के आंतरिक घटकों जैसे ग्रिडव्यू द्वारा उपयोग किया जाता है। आपको अपनी बाहरी जेएस या सीएसएस फ़ाइलों को संपत्ति फ़ोल्डर में स्टोर या प्रकाशित करने की आवश्यकता नहीं है।

दूसरी बात यह है कि यदि फाइलें पहले से मौजूद संपत्ति फ़ोल्डर getAssetManager()->publish('path/to/js') में मौजूद हैं, तो यह एजिंग की प्रतिलिपि नहीं बनायेगी।

और पिछले आप CClientScript वर्ग का दृष्टांत की जरूरत नहीं है, तो आप सीधे रूप में

Yii::app()->clientScript->registerScriptFile(
    Yii::app()->baseUrl.'/js/file.js' 
); 

कॉल कर सकते हैं या यदि आप विषयों

Yii::app()->clientScript->registerScriptFile(
    Yii::app()->theme->baseUrl.'/js/file.js' 
); 
+0

इस – Bujji

+0

के लिए आपको धन्यवाद, वह सीसीलिएंटस्क्रिप्ट क्लास -इंस्टेंटिंग नहीं कर रहा है। – marcovtwout

2

सामान्य मामले का सबसे अच्छा तरीका web_root/js में अपने जे एस फ़ाइलें डाल करने के लिए और $cs->registerScriptFile उपयोग करने के लिए है में के लिए धन्यवाद। एसेट मैनेजर विजेट्स में उपयोग करने के लिए सुविधाजनक है। आप अपनी जेएस फाइलों को संरक्षित फ़ोल्डर में डाल सकते हैं, और जब आवश्यक हो तो उन्हें संपत्ति फ़ोल्डर में प्रकाशित कर सकते हैं। यदि आप publish() विधि 10 बार कॉल करेंगे, तो इसे केवल अपनी फ़ाइलों को प्रकाशित करना चाहिए। यदि आप $forceCopy पैरामीटर true पर सेट करते हैं (डिफ़ॉल्ट false है), तो यह 10 बार कॉपी करेगा, लेकिन उसी डीआईआर में।

+0

आपकी त्वरित प्रतिक्रिया के लिए ओलेग धन्यवाद – Bujji

संबंधित मुद्दे