2012-11-14 15 views
7

डिफ़ॉल्ट रूप से parent::display($tpl); लोड components/com_my_component/views/my_component/tmpl/default.php, लेकिन कुछ मामलों में मुझे अन्य PHP फ़ाइल लोड करने की आवश्यकता है जो default.php (उदाहरण के लिए components/com_my_component/views/my_component/tmpl/lol.php) के पास एक ही फ़ोल्डर में है। view.html.php से यह कैसे करें।जूमला दृश्य में लोड लेआउट कैसे बदलें?

पीएस

कोई भाग्य के साथ लोड loadTemplate और setLayout विधियों का प्रयास किया।

+0

मुझे लगता है कि यह लेआउट = lol है। – Irfan

+0

@Irfan एक ही बकवास, लेकिन अब डिफ़ॉल्ट – user1692333

+0

लोड करता है क्या आप कृपया पूरा यूआरएल पेस्ट कर सकते हैं? – Irfan

उत्तर

10

स्वयं द्वारा समस्या हल की गई। विधि setLayout का उपयोग करें और इनपुट वाक्य रचना

$this->setLayout('dafault:lol'); 
parent::display($tpl); 
+0

मुझे नियंत्रक में त्रुटि मिली घातक त्रुटि: अपरिभाषित विधि पर कॉल करें FcseController :: setLayout() /var/www/pygmaxia2.gr/components/com_fcse/controller.php पर लाइन 33 और लाइन में कोड यह $ है-> सेटलाउट ('dafault: test'); कोई विचार? – themis

+0

ओह मैंने $ view = नया JView() किया; \t \t \t \t $ देखें-> सेटलेआउट ('डेफॉल्ट: टेस्ट'); और यह काम किया :) – themis

+0

यह कोड 'लेआउट' अनुरोध पैरामीटर को अनदेखा करने के लिए जूमला का कारण बन जाएगा। कृपया मेरा उत्तर देखें: http://stackoverflow.com/a/31833510/1031312 – Ozzy

2

डिफ़ॉल्ट रूप से, जूमला URL में layout कीवर्ड जो लेआउट प्रदर्शित करने के लिए तय करने के लिए के लिए लग रहा है पर ध्यान देने की जरूरत है। यदि यह चर खाली है या मौजूद नहीं है तो tmpl/default.php लेआउट लोड हो जाएगा।

अपनी view.html.php फ़ाइल को संपादित करके आप JView API का उपयोग करके डिफ़ॉल्ट लेआउट सेट कर सकते हैं, उदा। $this->setLayout('lol') यूआरएल example.com/yourviewexample.com/yourview?layout=lol के बराबर करेगा।

हालांकि, अकेले इस परिवर्तन के परिणामस्वरूप जूमला इसका डिफ़ॉल्ट व्यवहार ओवरराइड कर देगा ताकि layout अनुरोध को अनदेखा कर दिया जाएगा। इसका मतलब यह है अनुरोध example.com/yourview?layout=lmao भी प्रदर्शित करेगा कि example.com/yourview = example.com/yourview?layout=lol

आप setLayout समारोह के चारों ओर एक शर्त जोड़कर आसानी से इस का समाधान कर सकते हैं ताकि केवल तभी layout कीवर्ड मौजूद नहीं है तो आप lol को डिफ़ॉल्ट लेआउट सेट हो जाएगा, उदा

<?php 
    # ... 

     function display($tpl = null) { 
     # ... 

     # Edit : Set the default layout to 'lol' 
     $layout = JRequest::getWord('layout', ''); 
     if (empty($layout)) $this->setLayout("lol"); 

     // Display the view 
     parent::display($tpl); 
     } 

    # ... 
0

मैं इस पर वापस आ रहा हूं और मुझे अभी तक एक संतोषजनक समाधान नहीं मिला है।

क्या मेरे लिए सही J3.4 अप करने के लिए J1.5 से काम करता है, हमेशा तो view.html.php

में $ TPL चर सेट करने के लिए यदि $ TPL खाली है या "" कर दिया गया है Tmpl डिफ़ॉल्ट रूप से /default.php प्रदर्शित होता है।

यदि आप एक स्ट्रिंग में $ tpl बदलते हैं, उदा। $ tpl = "stacker" तो यह tmpl/default_stacker.php

को देखने और प्रदर्शित करने के लिए मैंने एमवीसी में पहले इसे बदलने पर विभिन्न भिन्न सिद्धांतों को देखा है ताकि इसे डिफ़ॉल्ट_ प्रीटेक्स्ट की आवश्यकता न हो। जैसे tmpl/stacker.php कोई भी मेरे लिए काम नहीं किया है।