2013-02-14 49 views
11

मैं ज़ेंड फ्रेमवर्क 2 में काम कर रहा हूं, मैं अपने सभी मार्गों के लिए सेगमेंट प्रकार का उपयोग कर रहा हूं लेकिन मैंने ज़ेंड कंकाल एप्लिकेशन में शाब्दिक मार्ग प्रकार का उपयोग देखा है। वे क्या हैं?शाब्दिक और सेगमेंट मार्ग के बीच क्या अंतर है?

उत्तर

17

मुझे लगता है कि क्या वास्तव में उमेर है पूछ रहा है, क्या शाब्दिक मार्ग का उद्देश्य है, जब खंड मार्ग पहले से ही इस कार्यक्षमता को शामिल किया गया।

कुछ शब्दों में इसे समझाने के लिए; सेगमेंट रूट एक उत्पन्न रेगेक्स के साथ इनपुट पर एक जटिल मिलान करता है, जबकि शाब्दिक मार्ग एक साधारण स्ट्रिंग तुलना करेगा। यह बहुत तेज़ बनाता है और जब कोई पैरामीटर मिलान आवश्यक नहीं होता है तो इसे प्राथमिकता दी जानी चाहिए।

12

एक शाब्दिक मार्ग नीचे बुनियादी उदाहरण की तरह एक बंद पृष्ठों के लिए अच्छा हो रहा है:

'router' => array(
    'routes' => array(
     'home' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/home', 
       'defaults' => array(
        'controller' => 'homeController', 
        'action' => 'index', 
       ) 
      ) 
     ) 
    ) 
) 

खंड मार्गों से परिचित नहीं उन लोगों के लिए। ये गतिशील हैं और यूआरएल सेगमेंट को नियंत्रक में पास करते हैं। इस उदाहरण से Zend फ्रेमवर्क 2 ट्यूटोरियल

'router' => array(
    'routes' => array(
     'album' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/album[/:action][/:id]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        'controller' => 'Album\Controller\Album', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

action खंड है कि नाम के साथ नियंत्रक में एक समारोह के लिए जाना जाएगा प्रारंभ करना है। तो /album/edit/2 जैसे यूआरएल AlbumController में editAction() फ़ंक्शन पर जाएंगे। id नियंत्रक में दो तरीकों से पहुंचा जा सकता है।

$id = $this->params()->fromRoute('id'); 

या

$id = $this->getEvent()->getRouteMatch()->getParam('id');