2012-09-22 28 views
5

जब ZF2 + ODM की स्थापना, मैं निम्न त्रुटि हो रही है:ज़ेंड फ्रेमवर्क 2 + सिद्धांत ओडीएम, "कक्षा कॉन्फ़िगर किए गए नेमस्पेस श्रृंखला में नहीं मिली" त्रुटि?

The class 'Application\Document\User' was not found in the chain configured namespaces 

मौजूदा सेटअप है निम्नलिखित के रूप में:

ZF2 स्थिर, स्थापित सिद्धांत ODM संगीतकार की सामग्री के साथ composer.phar के माध्यम से .json

{ 
    "name": "zendframework/skeleton-application", 
    "description": "Skeleton Application for ZF2", 
    "license": "BSD-3-Clause", 
    "keywords": [ 
     "framework", 
     "zf2" 
    ], 
    "homepage": "http://framework.zend.com/", 
    "minimum-stability": "dev", 
    "require": { 
     "php": ">=5.3.3", 
     "zendframework/zendframework": "2.0.0", 
     "doctrine/doctrine-mongo-odm-module": "dev-master" 
    } 
} 

मॉड्यूल लोड

'modules' => array(
    'Application', 
    'DoctrineModule', 
    'DoctrineMongoODMModule', 
), 

Hydrator और प्रॉक्सी dirs

$ ls -l data/DoctrineMongoODMModule/ 
total 0 
drwxrwxrwx 2 wisu staff 68 Sep 12 08:34 Hydrators 
drwxrwxrwx 2 wisu staff 68 Sep 12 08:35 Proxy 

बनाई गई हैं ODM config

तरह
'driver' => array(
    'odm_default' => array(
     'drivers' => array(
      'Application\Document' => 'aplikasi' 
     ) 
    ), 
    'aplikasi' => array(
     'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver', 
     'cache' => 'array', 
     'paths' => array(
      'module/Application/src/Application/Document' 
     ) 
    ) 
), 

मैं निम्नलिखित मानचित्रण

<?php 

namespace Application\Document; 

use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM; 

/** @ODM\Document(collection="user") */ 
class User 
{ 
    /** @ODM\Id */ 
    private $id; 

    /** @ODM\Field(type="string") */ 
    private $name; 

    /** 
    * @return the $id 
    */ 
    public function getId() { 
     return $this->id; 
    } 

    /** 
    * @return the $name 
    */ 
    public function getName() { 
     return $this->name; 
    } 

    /** 
    * @param field_type $id 
    */ 
    public function setId($id) { 
     $this->id = $id; 
    } 

    /** 
    * @param field_type $name 
    */ 
    public function setName($name) { 
     $this->name = $name; 
    } 

} 

उपयोग करने के लिए कोशिश कर रहा हूँ लेकिन

<?php 

namespace Application\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 
use Application\Document\User; 

class IndexController extends AbstractActionController 
{ 
    public function indexAction() 
    { 

     $dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default'); 

     $user = new User(); 
     $user->setName("Gembul"); 

     $dm->persist($user); 
     $dm->flush(); 

     return new ViewModel(); 
    } 
} 
के माध्यम से इसे बुला लग रहा है

कोई भी पीओ inters?

+0

मुझे नहीं लगता कि प्रदान की जवाब सही है है:

यह एक आवेदन module.config.php कि एक संकर समाधान ORM/ODM के लिए काम करेगा। क्या किसी और के पास कोई मुद्दा है कि समस्या क्या हो सकती है? – Sam152

उत्तर

0

बाहर मिले समस्या ...

कॉन्फ़िग फ़ाइल module.doctrine-मोंगो-odm.local.php autoload निर्देशिका के अंतर्गत नहीं था ...

+0

क्या आप वाकई समाधान चाहते हैं? मुझे DoctrineORMModule का उपयोग कर एक ही समस्या है। मैंने वैश्विक स्तर पर सिद्धांत कॉन्फ़िगरेशन सरणी डालने की कोशिश की है और साथ ही इसे मॉड्यूल स्तर से भी बुलाया है और मुझे हमेशा एक ही त्रुटि मिलती है। –

3

रियल समाधान module.doctrine-मोंगो जोड़ने नहीं है autoload निर्देशिका में -odm.local.php, इस लाइनों विन्यास के रूप में मेरे लिए काम किया

'driver' => array(   
     'ODM_Driver' => array(
      'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver', 
      'paths' => array(__DIR__ . '/../../module/Application/src/Application/Doctrine/Document') 
     ), 
     'odm_default' => array(
      'drivers' => array(
       'Application\Doctrine\Document' => 'ODM_Driver' 
      ) 
     ), 
    ), 
3

यह स्थापना वर्तमान संस्करण के साथ ठीक काम करती है: ZF2, MongoDB, and Doctrine installation

ओडीएम की डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल को हमारी कॉन्फ़िगरेशन निर्देशिका में कॉपी करें। इसके बाद आपको मॉड्यूल .doctrine-mongo-odm.local.php को अपने सेवर विनिर्देशों के रूप में संशोधित करने की आवश्यकता होगी। यह कॉन्फ़िगरेशन फ़ाइल है जहां आप अपने सर्वर होस्ट, पोर्ट्स, उपयोगकर्ता नाम और पासवर्ड सेट करते हैं। उदाहरण के प्रयोजनों के लिए हम मान लेंगे कि सब कुछ एक ही स्थानीय मशीन पर चल रहा है और कोई संशोधन नहीं करता है।

'doctrine' => array(
    'driver' => array(
     'orm_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity') 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Entity' => 'orm_driver' 
      ) 
     ), 
     'odm_driver' => array(
      'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver',   
      'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Document') 
     ), 
     'odm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Document' => 'odm_driver' 
      ) 
     )     
    ) 
)