2012-09-20 12 views
6

मॉड्यूल में नया नियंत्रक जोड़ने के लिए हमें कौन सी फाइलें करने की आवश्यकता है और इसे यूआरएल के माध्यम से कॉल करें।ज़ेंड फ्रेमवर्क 2 नया नियंत्रक जोड़ें

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

क्योंकि नियंत्रक फ़ाइलों में प्रत्येक जोड़ या संपादित करने पर कॉन्फ़िगरेशन फ़ाइलों में परिवर्तन करने के लिए यह बहुत कठिन होगा।

उत्तर

4

एक नया नियंत्रक बनाने के लिए, आप कम से कम करने के लिए

  • नियंत्रक वर्ग
  • सुनिश्चित करें कि आप एक मिलान मार्ग को संतुष्ट करता है कि अपने उद्देश्य (आप मौजूदा ले जा सकते हैं मिल गया है बनाने के बनाने के साथ ही है विशेष प्रयोजनों के लिए एक नया निर्माण करें)
  • अपने मॉड्यूल के module.config.php में controllers.invokables प्रविष्टि बनाएं।

इन तीन सरल चरणों के आसपास कोई रास्ता नहीं है। मुझे नहीं लगता कि जब आप नियंत्रक जोड़ते हैं तो module.config.php को अनुकूलित करने में समस्या क्यों होनी चाहिए - यही कॉन्फ़िगरेशन फाइलें हैं। खोलने सहित, अन बंद करने की बचत, यह लगभग लेता है। 10-15 सेकंड आप सैकड़ों नियंत्रक नहीं बनाने जा रहे हैं, है ना?

+6

zf1 newbei तैयार नहीं था, zf2 और भी मुश्किल :) :)) – SMka

+0

मैं यह नहीं कहूंगा। मैंने ज़ेडएफ 1 का उपयोग नहीं किया है, लेकिन जेडएफ 2 में इतने सारे अच्छे पहलू हैं जिनके पास जेडएफ 1 नहीं है (अन्य लोगों की राय के अनुसार)। –

+0

पांच वर्षों में zf1 के साथ काम कर रहा है। zf2 - वास्तव में, वास्तव में अच्छा :) – SMka

9

मैं डैनियल ने जो कहा है, उस पर थोड़ा सा स्पष्टीकरण जोड़ रहा हूं, "सुनिश्चित करें कि आपके पास एक मिलान करने वाला मार्ग है जो आपके उद्देश्य को पूरा करता है ..."। मेरे उद्देश्य के लिए मैं मॉड्यूल/एप्लिकेशन/src/application/Controller/IndexController.php और मॉड्यूल/एप्लिकेशन/src/application/Controller/ProfileController.php के मार्गों को समायोजित करने का प्रयास कर रहा था, हालांकि मैंने अपने प्रोफाइल नियंत्रक को कुछ भी हल करने के लिए संघर्ष किया। यह भी स्पष्ट नहीं था कि ZF2 एक ही मॉड्यूल में एकाधिक नियंत्रकों को समायोजित कर सकता है। मैंने सोचा कि निश्चित रूप से यह होना चाहिए और यह करता है! दो उपरोक्त नियंत्रकों को देखते हुए इस प्रकार मैंने मॉड्यूल/एप्लिकेशन/कॉन्फ़िगर/module.config.php के अंदर अपना 'राउटर' सरणी तैयार की है।

'router' => array(
    'routes' => array(
     'home' => array(
      'type' => 'Zend\Mvc\Router\Http\Literal', 
      'options' => array(
       'route' => '/', 
       'defaults' => array(
        'controller' => 'Application\Controller\Index', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
     'application' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/application', 
       'defaults' => array(
        '__NAMESPACE__' => 'Application\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'default' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/[:controller[/:action]]', 
         'constraints' => array(
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
         ), 
        ), 
       ), 
      ), 
     ), 

     'profile' => array(
      'type' => 'literal', 
      'options' => array(
       'route' => '/profile', 
       'defaults' => array(
        '__NAMESPACE__' => 'Application\Controller', 
        'controller' => 'Profile', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

यह भी है कि मेरे 'नियंत्रक' invokables modules.config.php में सफलता के बाद दिखता है।

'controllers' => array(
    'invokables' => array(
     'Application\Controller\Index' => 'Application\Controller\IndexController', 
     'Application\Controller\Profile' => 'Application\Controller\ProfileController' 
    ), 
), 
+4

ज़ेंड 2 वास्तव में काम करने योग्य नहीं है ... मुझे नियंत्रक जोड़ने के लिए हुप्स से गुजरना नहीं चाहिए। एकदम मेरे विचार। – aserwin

+0

@ user1815615, सही स्पष्टीकरण :) +1 – SagarPPanchal

-1

Zend फ्रेमवर्क 2 संदर्भ

से हम नियंत्रकों हम आवेदन में पड़ सकती है के बारे में आवेदन को सूचित करें। यह सेवा प्रबंधक को एप्लिकेशन को तोड़ने के प्रयास में किसी भी सेवा का अनुरोध करने से रोकने के लिए है। प्रेषक एक विशेष, स्कोप्ड कंटेनर का उपयोग करता है जो केवल नियंत्रकों को खींचता है जो विशेष रूप से इसके साथ पंजीकृत होते हैं, या तो अनावश्यक कक्षाओं या कारखानों के माध्यम से।

src: http://framework.zend.com/manual/2.0/en/modules/zend.mvc.quick-start.html#create-a-route

नियंत्रकों जोड़ना URL में नियंत्रक निर्दिष्ट करने के लिए सक्षम होने के लिए चाहते हैं डेवलपर्स के कारण मार्ग से संबंधित नहीं है, ऊपरी तौर को छोड़कर। यह एक सुरक्षा मुद्दा है, इस तथ्य के कारण कि हम नियंत्रकों सेवाओं के रूप में व्यवहार करते हैं।

यह एक प्रयास है (ए) यह सुनिश्चित करने के लिए कि कौन से नियंत्रक उपलब्ध हैं, और (बी) डिफ़ॉल्ट रूप से सुरक्षित होने के लिए।

जैसा कि मैथ्यू वीयर ओ'फिनी ने कहा था।