Не могу найти базовый путь для связки

Я использую Symfony2 и хочу генерировать геттеры и сеттеры для объектов, запустив:

$ php app/console doctrine:generate:entities TestBundle 

введите описание изображения здесь

Консоль возвращает мне следующее сообщение:

[RuntimeException] Не удается найти базовый путь для «TestBundle» (путь: «C: \ xampp \ htdocs \ ProjectX \ src \ Namespace \ TestBundle», назначение: «C: / xampp / htdocs / ProjectX / src / Namespace / TestBundle «).

Пакет существует в этом месте: C:\xampp\htdocs\ProjectX\src\Namespace\TestBundle

Что не так?

Просто добавьте что-то еще, если другие достигнут этого. У меня возникла ошибка, вызвавшая ту же ошибку, но это было связано с тем, что мои сущности, живущие в кодовой базе, использовали PSR-4. Doctrine не поддерживает PSR-4, когда что-то делает с генерацией кода. Это связано с тем, как они сопоставляют пространства имен классов с путями файловой системы и как PSR-4 позволяет пути класса / пространства имен, которые непосредственно не сопоставляются с файловой системой.

https://github.com/doctrine/DoctrineBundle/issues/282

У меня была эта проблема, вызванная некоторой проблемой с нижним регистром / верхним регистром в моем каталоге пакетов. Это не проблема под окнами, но функция php str_replace чувствительна к регистру, генерирует ошибку

 //Doctrine\Bundle\DoctrineBundle\Mapping\MetadataFactory private function getBasePathForClass($name, $namespace, $path) { $namespace = str_replace('\\', '/', $namespace); $search = str_replace('\\', '/', $path); $destination = str_replace('/' . $namespace, '', $search, $c); if ($c != 1) { throw new \RuntimeException(sprintf('Can\'t find base path for "%s" (path: "%s", destination: "%s").', $name, $path, $destination)); } return $destination; } 

Doctrine не может воссоздать путь класса на основе пространства имен: значит, ваше пространство имен или ваша папка неправильны (check case)

Имя вашего php-файла Bundle является неправильным изменением с TestBundle.php на NamespaceTestBundle.php в пути: C: / xampp / htdocs / ProjectX / src / Namespace / TestBundle /

Ответ Джона Панкоаста верен.

Просто добавьте что-то еще, если другие достигнут этого. У меня возникла ошибка, вызвавшая ту же ошибку, но это было связано с тем, что мои сущности, живущие в кодовой базе, использовали PSR-4. Doctrine не поддерживает PSR-4, когда что-то делает с генерацией кода. Это связано с тем, как они сопоставляют пространства имен классов с путями файловой системы и как PSR-4 позволяет пути класса / пространства имен, которые непосредственно не сопоставляются с файловой системой.

https://github.com/doctrine/DoctrineBundle/issues/282

Чтобы точно определить, что необходимо для устранения сообщения об ошибке; отредактируйте файл composer.json вашего пакета, а также измените структуру папок пакета.

в composer.json измените psr-4 на psr-0 :

 "autoload": { "psr-4": { "Acme\\Bundle\\AwesomeBundle\\": "" } }, 

чтобы:

 "autoload": { "psr-0": { "Acme\\Bundle\\AwesomeBundle\\": "" } }, 

Измените структуру папок пакета:

 vendor +--acme +--awsome-bundle |--Controller |--Entity 

чтобы:

 vendor +--acme +--awsome-bundle +--Acme +--Bundle +--AwsomeBundle |--Controller |--Entity 

Следующая команда больше не будет генерировать исключение:

 bin/console doctrine:generate:entities AwesomeBundle