2012-09-22 34 views
5

Khi thiết lập ZF2 + ODM, tôi nhận được lỗi sau:Zend Framework 2 + Doctrine ODM, "Lớp học không được tìm thấy trong chuỗi cấu hình không gian tên" lỗi?

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

Các thiết lập hiện tại là như sau:

ZF2 ổn định, học thuyết cài đặt ODM qua composer.phar với nội dung của nhà soạn nhạc .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" 
    } 
} 

module nạp

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

Hydrator và proxy dirs được tạo ra

$ 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 

cấu hình odm trông giống như

'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' 
     ) 
    ) 
), 

Tôi đang cố gắng sử dụng các bản đồ sau

<?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; 
    } 

} 

nhưng gọi nó qua

<?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(); 
    } 
} 

Mọi po giao nhau?

+0

Tôi không nghĩ rằng câu trả lời cung cấp là chính xác. Có ai khác có bất kỳ suy nghĩ về những gì vấn đề có thể được? – Sam152

Trả lời

0

Tìm thấy ra vấn đề ...

Config tập tin module.doctrine-Mông Cổ-odm.local.php không dưới thư mục autoload ...

+0

Bạn có chắc đó thực sự là giải pháp không? Tôi đã có cùng một vấn đề bằng cách sử dụng DoctrineORMModule. Tôi đã thử đặt các mảng cấu hình doctrine ở mức toàn cầu cũng như có nó được gọi là từ cấp mô-đun và tôi luôn luôn nhận được cùng một lỗi. –

3

giải pháp thực sự không phải là thêm module.doctrine-Mông Cổ -odm.local.php vào thư mục tự động load, đường dây này làm việc cho tôi như cấu hình

'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

cài đặt này hoạt động tốt với các phiên bản hiện tại: ZF2, MongoDB, and Doctrine installation

Sao chép tệp cấu hình mặc định của odm vào thư mục cấu hình của chúng tôi. Sau đó, bạn sẽ cần phải sửa đổi module.doctrine-mongo-odm.local.php như thông số kỹ thuật của máy chủ. Đây là tệp cấu hình nơi bạn đặt máy chủ lưu trữ, cổng, tên người dùng và mật khẩu của máy chủ. Vì mục đích ví dụ, chúng tôi sẽ giả định mọi thứ đang chạy trên cùng một máy cục bộ và không thực hiện bất kỳ sửa đổi nào.

Đây là một ứng dụng module.config.php rằng sẽ làm việc cho một giải pháp lai ORM/ODM:

'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' 
      ) 
     )     
    ) 
) 
Các vấn đề liên quan