2015-11-16 8 views
10

मुझे मॉड्यूल रूटिंग के साथ कोई समस्या है। मेरे पास 2 मॉड्यूल, एप्लिकेशन और एडमिन हैं। प्रत्येक मॉड्यूल डिफ़ॉल्ट क्रिया के रूप में indexAction है:ज़ेंड फ्रेमवर्क 2 मॉड्यूल नाम रूटिंग समस्या

स्थानीय होस्ट/-> आवेदन/सूचकांक

स्थानीय होस्ट/व्यवस्थापक/-> व्यवस्थापक/सूचकांक

व्यवस्थापक/सूचकांक केवल स्थानीय होस्ट/व्यवस्थापक/सूचकांक/

साथ काम करता है

यह समस्या तब होती है जब एक मॉड्यूल नाम "ए" अक्षर से शुरू होता है। अगर मैं व्यवस्थापक को "कार" में बदलता हूं, तो स्थानीयहोस्ट/कार/सही तरीके से काम करता है!

त्रुटि है:

<?php 
return array(
    'router' => array(
     'routes' => array(
      'Admin' => array(
       'type' => 'Segment', 
       'options' => array(
        'route' => '/admin/[:action/]', 
        'constraints' => array(
         'action' => '[a-zA-Z][a-zA-Z0-9_-]*' 
        ), 
        'defaults' => array(
         'controller' => 'Admin\Controller\AdminController', 
         'action' => 'index' 
        ), 
       ), 
      ), 
     ), 
    ), 
    'controllers' => array(
     'invokables' => array(
      'Admin\Controller\AdminController' => 'Admin\Controller\AdminController' 
     ), 
    ), 
    'view_manager' => array(
     'display_not_found_reason' => true, 
     'display_exceptions'  => true, 
     'template_path_stack'  => array(
      'Admin' => __DIR__ . '/../view', 
     ), 
    ), 
); 
?> 
:

<?php 
return array(
    'router' => array(
     'routes' => array(
      'Application' => array(
       'type' => 'Segment', 
       'options' => array(
        'route' => '[/][:action/]', 
        'constraints' => array(
         'action' => '[a-zA-Z][a-zA-Z0-9_-]*',       
        ), 
        'defaults' => array(
         'controller' => 'Application\Controller\Application', 
         'action'  => 'index', 
        ), 
       ), 
      ), 
     ), 
    ), 
    'controllers' => array(
     'invokables' => array(
      'Application\Controller\Application' => 'Application\Controller\IndexController' 
     ), 
    ), 

    'view_manager' => array(
     'display_not_found_reason' => true, 
     'display_exceptions'  => true, 
     'not_found_template'  => 'error/404', 
     'exception_template'  => 'error/index', 
     'template_map' => array(
      'layout/layout'   => __DIR__ . '/../view/layout/layout.phtml', 
      'Application/Application/index' => __DIR__ . '/../view/Application/index/index.phtml', 
      'error/404'    => __DIR__ . '/../view/error/404.phtml', 
      'error/index'    => __DIR__ . '/../view/error/index.phtml', 
     ), 
     'template_path_stack' => array(
      'Application' => __DIR__ . '/../view', 
     ), 
    ), 
); 
?> 

इस व्यवस्थापक मॉड्यूल के अंदर module.config.php है:

A 404 error occurred 
The requested controller was unable to dispatch the request. 
Controller: 
Application\Controller\Application 
No Exception available 

इस आवेदन मॉड्यूल के अंदर module.config.php है

IndexController.php

namespace Application\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 

class IndexController extends AbstractActionController 
{ 

    public function indexAction(){ 

    } 
} 

AdminController.php

namespace Admin\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 

class AdminController extends AbstractActionController 
{ 

    public function indexAction() 
    {} 
} 

किसी को भी मेरी मदद कर सकते?

+0

आप किस प्रकार के त्रुटि संदेश का सामना कर रहे हैं? –

+1

अनुरोध '/ admin/'आपके आवेदन और व्यवस्थापक दोनों मार्गों से मेल खाता है। अपनी समस्या को ठीक करने के लिए आपको इस अस्पष्टता को दूर करने की आवश्यकता है। –

+0

एक 404 त्रुटि हुई अनुरोधित नियंत्रक अनुरोध प्रेषित करने में असमर्थ था। नियंत्रक: आवेदन \ नियंत्रक \ अनुप्रयोग कोई अपवाद उपलब्ध नहीं –

उत्तर

3

सबसे पहले आपकी त्रुटि The requested controller was unable to dispatch the request. केवल तब होती है जब राउटर अपनी परिभाषित कार्रवाई के अनुरोध को प्रेषित नहीं कर सकता है। तो कृपया सत्यापित करें कि आपका नियंत्रक सही है और कार्य मौजूद हैं और कॉल करने योग्य हैं।

जैसा कि पहले से ही आपके /admin/ मार्ग को इंगित किया गया है, दो कॉन्फ़िगर किए गए एंडपॉइंट्स को इंगित करेगा। यह पहली जगह में कोई समस्या नहीं है जब व्यवस्थापक मार्ग को कॉन्फ़िगरेशन में एप्लिकेशन रूट से पहले परिभाषित किया जाएगा।

तो आपका मार्ग /admin/ मार्ग कभी भी आपके AdminController पर रूट नहीं किया जाएगा क्योंकि अन्य गतिशील मार्ग पहले मिलान किए जाएंगे।

आपको अपेक्षित परिणाम प्राप्त करने के लिए priority अपने मार्ग में सेटिंग का उपयोग करें, यह सुनिश्चित करने के लिए कि Admin मार्ग आपके Application मार्ग से पहले मिलान किया जाएगा।

'router' => array(
    'routes' => array(
     'Admin' => array(
      'priority' => 100, 
      'type' => 'Segment', 
      'options' => array(
       'route' => '/admin/[:action/]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*' 
       ), 
       'defaults' => array(
        'controller' => 'Admin\Controller\AdminController', 
        'action' => 'index' 
       ), 
      ), 
     ), 
    ), 
), 

अपने प्रश्न के अलावा, ?> इस रूप के साथ php स्क्रिप्ट खत्म नहीं कीड़े का कारण बन सकता है जब एक खाली स्थान के अंत टैग के बाद है।

+0

काम करता है! मदद के लिए बहुत बहुत धन्यवाद! –

संबंधित मुद्दे