2010-05-27 15 views
13

में मेरे वेब ऐप के लिए मोबाइल संस्करण बनाना मैं एक नया वेब ऐप विकसित करने के लिए कोडइग्निटर का उपयोग कर रहा हूं, और मैं एक मोबाइल संस्करण बनाना चाहता हूं जो उपयोगकर्ता अपने फोन से मिलने पर रीडायरेक्ट हो जाएंगे।कोडइग्निटर

ऐप के मोबाइल संस्करण में एक अलग प्रवाह होना चाहिए, इसलिए कोड में सीएसएस/एचटीएमएल फाइलों को स्वैप करना मेरे लिए एक विकल्प नहीं है क्योंकि मोबाइल संस्करण और वेब संस्करण उनके नियंत्रकों और दृश्यों में चीजों को अलग-अलग संभालेगा, जबकि एक ही मॉडल साझा करना।

वैसे भी मैं इसे कुशलतापूर्वक कैसे कर सकता हूं?

आपकी सहायता की बहुत सराहना की जाती है। :)

उत्तर

4

तुम सच में 2 स्वतंत्र क्षुधा की जरूरत है, आप सेटअप जस्ट एक या दो CodeIgniter कोर संशोधन के साथ आप PHP4 या 5.

उपयोग कर रहे हैं हम इसे इस CI's wiki page और यह काम करता निम्न कार्य किया है निर्भर करता है सकते हैं इस, बढ़िया, हम मॉडल, पुस्तकालय, विन्यास साझा करते हैं। मूल रूप से आप इस तरह एक परियोजना संगठन है:

/application/ 
    /common/<similar to application directory, but used for shared libs/helper/models/configs files> 
    /frontend/<similar to application directory> 
    /backend/<similar to application directory> 
/system/ 

लोडर अधिभावी आप लोड हो रहा है प्राथमिकता लागू कर सकते हैं अगर एक ही lib/config आम वर्ग या एप्लिकेशन-विशिष्ट) के लिए मौजूद है के द्वारा। इसके अलावा आप सभी सामान्य कोड (नियंत्रक, विशिष्ट रूटिंग क्लास इत्यादि) को स्थानांतरित कर सकते हैं और अपने ऐप्स में केवल एप्लिकेशन विशिष्ट ओवरलोडिंग को ही रख सकते हैं।

अंत में आपको दो फ्रंट कंट्रोलर (ज्यादातर इंडेक्स.एफपी फ़ाइल के समान) मिलते हैं, प्रत्येक ऐप के लिए, और आप यूआरएल रीराइटिंग, विशिष्ट सबडोमेन इत्यादि के साथ आगंतुकों को फ़िल्टर करने के लिए स्वतंत्र हैं।

आप PHP4 चला रहे सर्वरों को लक्षित कर रहे हैं, मैं CodeIgniter मंचों पर this thread खोला देखने के लिए कोर कक्षाओं में बदलने के लिए यह काम करने के लिए (संशोधन के बिना वहाँ एक लोड करने की समस्या है)

एक और व्यवहार्य विकल्प प्राप्त करने के लिए है, लेकिन मैंने अभी तक इसका उपयोग नहीं किया है, HMVC organisation

+0

बढ़िया! मुझे लगता है कि मैं क्या चाहता हूँ, धन्यवाद। हालांकि, मुझे नहीं पता कि 'फ्रंटेंड' या 'बैकएंड' फ़ोल्डर में नियंत्रकों में से एक में 'सामान्य' से मॉडल कैसे लोड किया जाए। यह कैसे किया जाता है? – KeyStroke

+0

मैंने कल रात इसके बारे में सोचा था, यह मेरे जवाब में लापता बिंदु है, आपको सीआई_लोडर क्लास को ओवरराइस करना होगा ताकि ऐप ऐप पथ से पहले सामान्य पथ में मॉडल/हेल्पर्स/लाइब्रेरी/कॉन्फ़िगरेशन की खोज करे। हमारे सेटअप में APPPATH निरंतर फ्रंट नियंत्रक में संशोधित किया गया है और हमने उसी तरह एक COMMONPATH जोड़ा है। – Benoit

+0

धन्यवाद। एक आखिरी छोटा सा: यदि आप एक ही यूआरएल का उपयोग करना चाहते हैं तो आप ऐप्स के बीच स्विचिंग की सिफारिश कैसे करेंगे? index.php में एजेंट पहचान का उपयोग करके और फिर कुकी सेट करना? या एक और तरीका? – KeyStroke

1

समाधान (क): एक वैश्विक नियंत्रक में

  • चेक उपयोगकर्ता एक मोबाइल या एक डेस्कटॉप क्लाइंट
  • लोड ग्राहक संस्करण पर आधारित नियंत्रकों का उपयोग करता है (controller_default.php/controller_mobile.php)
  • सभी क्लाइंट-विशिष्ट सामान दो बार
  • विचार भिन्न फ़ोल्डर

नोट में संग्रहित किया जा सकता कार्य करें: (ए) उस समय आपका आवेदन बढ़ने पर गन्दा हो जाता है।

समाधान (ख):

  • संशोधित index.php अलग आवेदन ग्राहक के आधार पर फ़ोल्डर लोड करने में एक साझा फ़ोल्डर

किसी में

  • स्टोर अपने मॉडल/कॉन्फ़िगरेशन/libs इस्तेमाल किया सीआई ढांचे के उपरोक्त आवश्यक (व्यापक?) संशोधन में से। बाद में अपडेट करने में सक्षम होने के लिए मौजूदा कक्षाओं (MY_Controller इत्यादि) को ओवरराइट करके जितना संभव हो उतना करने का प्रयास करें।

  • +0

    दोनों संभव हैं, मैं मध्यम से बड़ी वेबसाइट (10 नियंत्रक विधियों से अधिक कहने के लिए) समाधान समाधान पसंद करता हूं। इसे वास्तव में ढांचे में संशोधन की आवश्यकता होती है लेकिन यदि आप सीआई कोर कक्षाओं को अधिभारित कर रहे हैं तो ये बहुत सीमित हैं। – Benoit