Модель класса не найдена в Doctrine 2.2 + CodeIgniter 2.1 - PullRequest
1 голос
/ 22 февраля 2012

Я создал проект с CodeIgniter 2.1 и Doctrine 2.2, следуя инструкции по Doctrine cookbook .EntityManager работает, но когда я пытаюсь загрузить модели сущностей, он выдает ошибку

Fatal error: Class 'Users' not found in /Volumes/Data/Projects/myproject/application/controllers/home.php on line 10 

Это мой файл home.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//require_once(APPPATH.'models/Users.php');

class Home extends CI_Controller {
  public function index()
  {
    $em = $this->doctrine->em;
    $users = new Users;     
    //$user = $em->find("Users", 1);
    $em->flush(); // dummy
    $this->load->view('welcome_message');
  }
}

Если я раскомментирую строку 3: require_once(APPPATH.'models/Users.php');, то работает отлично.

Как сделать так, чтобы модели загружались автоматически?

Механизм автозагрузки обрабатывается загрузчиком в библиотеки / Doctrine.php, не так ли?

    $entitiesClassLoader = new ClassLoader('models', rtrim(APPPATH, "/" )); 
    $entitiesClassLoader->register(); 

Пожалуйста, кто-нибудь подскажет мне об этой проблеме.

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Я предполагаю, что у вас есть строка пространства имен внутри вашего файла Users.php?

Если это так, вам нужно будет добавить оператор "use" в код вашего контроллера, чтобы система пространства имен php зналагде искать ваши сущности.

Если нет, то убедитесь, что ваш entityClassLoader действительно вызывается и что APPPATH имеет ожидаемое значение.

0 голосов
/ 22 февраля 2012

Я никогда не работал с CI и Doctrine, поэтому не знаю, должен ли Doctrine загружать модели или куда он их загружает, но вы должны попытаться сделать это сами, не с включением, а так:

В контроллере: $ this-> load-> model ('Users');

Или как автозагрузка в application / config / autoload.php и загрузить модель в массив.

...