2010-11-04 11 views
6

मैं इसके बारे में सोच रहा हूँ एक मॉड्यूल में एक मॉड्यूल संरचना (या कुछ है कि ऐसा प्रतीत होता है)Zend मॉड्यूल

वर्तमान में मैं एक व्यवस्थापक मॉड्यूल का उपयोग, इस तरह यूआरएल का उपयोग कर बनाने के लिए संभव है:

public/admin/index/index 

इस तरह एक फ़ोल्डर संरचना के साथ:

:

applications 
-- modules 
---- admin 
------ controllers 
------ views [and so on] 

मैं यूआरएल इस तरह उपयोग करना चाहते हैं

कहाँ समाचार और गैलरी हैं मॉड्यूल

फ़ोल्डर संरचना इस

applications 
-- modules 
---- admin 
------ controllers 
------ views 
-------- scripts 
---------- modules 
------------ news 
-------------- controllers 
-------------- views [and so on] 
------------ gallery 
-------------- controllers 
-------------- views [and so on] 

कैसा दिखेगा यह संभव है? मैंने अपने बूटस्ट्रैप में एक और मॉड्यूल जोड़ने की कोशिश की:

$moduleLoader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'Module', 
      'basePath' => APPLICATION_PATH . '/modules/admin/views/scripts/modules')); 

लेकिन यह काम नहीं कर सका। मैं समाचार, गैलरी और ऐसे मॉड्यूल बना सकता हूं और उन्हें अपने व्यवस्थापक लेआउट में लोड कर सकता हूं। सब कुछ एक ही शैली और व्यवस्थापक के बाकी के रूप में मेनू में होगा, लेकिन मैं नहीं बल्कि यह मेरे रास्ते कृपया देखना होगा (अगर यह संभव है)

अगर मैं कुछ चाहते हैं पूरी तरह से सवाल से बाहर या कोई सुझाव, विचार है, मुझे बताएं।

+1

आपको इसे दूसरे तरीके से करना चाहिए। प्रत्येक मॉड्यूल में एक AdminController रखें। यह सभी मॉड्यूल तर्क को एक ही स्थान पर रखता है और कई में नहीं। आप शायद सबमिड्यूल जोड़ सकते हैं लेकिन आपको शायद इसके लिए मौजूदा ढांचे को फिर से लिखना होगा क्योंकि यह इरादे से लागू नहीं किया गया है। – Fge

+0

क्या आप इसे थोड़ा और समझा सकते हैं? मुझे लगता है कि मैं समझ नहीं पा रहा हूं कि यह कैसे अनुवाद करेगा, लेकिन मुझे इसकी आवाज़ पसंद है ... –

उत्तर

11

ए मॉड्यूल लॉजिकल लिंक्ड कार्यक्षमता का संग्रह है (उदाहरण के लिए , एक गैलरी)। चीजों को सरल रखने के लिए, आपको इसकी निर्देशिका में मॉड्यूल के लिए सभी संबंधित कोड स्टोर करना चाहिए (इसमें कोई भी व्यवस्थापक-कार्य भी शामिल है)। आपके व्यवस्थापक मॉड्यूल में आपके पास कई अन्य मॉड्यूल का कोड है, जो दोनों मॉड्यूल को पुन: उपयोग करने में कठोर बनाता है क्योंकि वे सभी AdminModule पर निर्भर करते हैं और AdminModule अन्य सभी मॉड्यूल पर निर्भर करता है। यह मॉड्यूल के विचार को पूरी तरह से तोड़ देता है। यदि यह समझने में मदद करता है, तो आप नियंत्रकों को सबमिड्यूल के रूप में देख सकते हैं (यह गलत है मुझे पता है, लेकिन शायद यह समझ को आसान बनाता है)।

आप कुछ इस तरह कर सकता है तो पहली बार में:

  • गैलरी मॉड्यूल
    • ImageController (viewAction, browseAction, ...)
    • AdminController (editImage, uploadImage, ...)
    • ...
  • उपयोगकर्ता मॉड्यूल
    • SettingsController
    • AdminController
    • ...

लेकिन फिर आप अलग अलग नियंत्रकों के ऊपर एक इकाई के लिए कोड अलग हो गए। ImageController की तरह आप छवियों को देखने को संभालते हैं लेकिन संपादन और अपलोडिंग AdminController में किया जाता है।
तो (यह कम से कम है कि मैं इसे कैसे करते हैं):

  • गैलरी मॉड्यूल
    • ImageController (viewAction, addAction, editAction, deleteAction, ...)
    • GalleryContoller (viewAction, addAction, editAction, deleteAction, ...)
    • ....

यह कश्मीर सभी चीजों को एक साथ जोड़ता है कि तार्किकता एक साथ है। एक नियंत्रक एक इकाई के लिए सभी कार्यों के लिए ज़िम्मेदार है (जैसे एक छवि, गैलरी से संबंधित कार्यों के लिए गैलरी नियंत्रक) से संबंधित सभी कार्यों के लिए ImageController। इसमें प्रशासनिक कार्य भी शामिल हैं।
यदि आप इसे इस तरह से करते हैं, तो शायद कोई वास्तविक AdminModule नहीं है। यह केवल प्रत्येक मॉड्यूल/नियंत्रक के प्रशासनिक कार्यों से जुड़ा हुआ कुछ प्रकार का नेविगेशन होगा।

आप निश्चित रूप से submodules का समर्थन करने के लिए zf को फिर से लिख सकते हैं। यह शामिल होगा:

  • एक मार्ग है कि submodules (आसान एक) का समर्थन करता है
  • submodules
  • submodules के लिए Autoloader पुनर्लेखन
  • प्लग-लोडर के लिए कई अन्य निर्देशिकाओं को जोड़ने का समर्थन करने के डिस्पैचर पुनर्लेखन जोड़ना & दूसरों

लेकिन यह किसी भी MVC ढांचे मैंने कभी इस रूप में देखा है के साथ किया नहीं है आम तौर पर एक डिजाइन कमजोरी (फिर से, मेरी राय में) और एक सामान्य पर्फ़ का तात्पर्य ऑरमोन्स ढीला (ऑटोलोडर के बदले में और अधिक निर्देशिकाएं बदतर)।

+0

व्याख्या करने के लिए धन्यवाद! मुझे लगता है कि मैं समझता हूं और अगले कुछ दिनों में इसे देख रहा हूं। धन्यवाद! –

+0

एक और कुडो। अच्छी व्याख्या और अच्छी तरह से विचार तर्क। मुझे सही दिशा में इंगित करें। धन्यवाद। – Fatmuemoo

+0

हम्म। आप एक ही पृष्ठ पर कई मॉड्यूल कैसे आउटपुट करेंगे? मतलब विगेट्स की तरह कुछ है? क्या यह संभव है? मुझे पता है कि मैं एक्शन व्यू हेल्पर का उपयोग कर सकता हूं - लेकिन यह AFAIK पूरे प्रेषण लूप को ट्रिगर करेगा - है ना? – Stann

0

जेडएफ निर्देशिका संरचना, अनुकूलन योग्य है मुख्य रूप से द्वारा:

  • सामने नियंत्रक विकल्प (जैसे setControllerDirectory(), addPluginPath() आदि)
  • दृश्य विकल्प (addPath(), addHelperPath()
  • autoloaders, जैसे _resourceLoader मॉड्यूल बूटस्ट्रैप में
संबंधित मुद्दे