У меня был класс сущности в Aib \ PlatformBundle \ Entity \ User.php
У меня не было проблем с попыткой создать его класс формы через
php app / console doctrine: generate: form AibPlatformBundle: User
Теперь я изменил пространство имен на Aib \ PlatformBundle \ Entity \ Identity \ User, но когда я пытаюсь сгенерировать форму с задачей, я сказал, прежде чем он говорит:
«Класс Aib \ PlatformBundle \ Entity \ User не является допустимым объектом или отображенным суперклассом».
Это содержимое файла:
<?php
namespace Aib\PlatformBundle\Entity\Identity;
use Doctrine\ORM\Mapping as ORM;
/**
* Aib\PlatformBundle\Entity\Identity\User
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Aib\PlatformBundle\Entity\Identity
\UserRepository")
*/
class User
{
...
Любая идея?
symfony2.0.4
php
symfony
doctrine-orm
ziiweb
источник
источник
Ответы:
Была эта проблема - не забудьте аннотацию,
* @ORM\Entity
как показано ниже:/** * Powma\ServiceBundle\Entity\User * * @ORM\Entity * @ORM\Table(name="users") */
источник
Была эта проблема вчера и нашел эту тему. Я создал объект с отображением в новом пакете (например, MyFooBundle / Entity / User.php), выполнил всю конфигурацию в соответствии с документами, но получил ту же ошибку сверху при попытке загрузить приложение.
В конце концов я понял, что не загружаю MyFooBundle в AppKernel:
new My\FooBundle\MyFooBundle()
Отличный способ отладить это - запустить эту команду:
источник
Убедитесь, что ваш файл config.yml должен содержать что-то вроде этого:
# Doctrine Configuration doctrine: dbal: driver: %database_driver% host: %database_host% port: %database_port% dbname: %database_name% user: %database_user% password: %database_password% charset: UTF8 types: json: Sonata\Doctrine\Types\JsonType orm: auto_generate_proxy_classes: %kernel.debug% # auto_mapping: true entity_managers: default: mappings: FOSUserBundle: ~ # ApplicationSonataUserBundle: ~ YourUserBundle: ~ SonataUserBundle: ~
Добавьте свой собственный комплект в список сопоставлений.
источник
Я решил это, передав
false
в качестве второго параметраDoctrine\ORM\Configuration::newDefaultAnnotationDriver
.Мне потребовалось время, чтобы покопаться в Google и исходном коде.
Мой случай был особенным, поскольку я использовал отображение, указывающее на другой каталог, не связанный с установкой Symfony, поскольку мне также приходилось использовать устаревший код.
Я реорганизовал устаревшие сущности, и они перестали работать. Раньше они использовали
@Annotation
вместо@ORM\Annotation
, поэтому после рефакторинга он просто не смог прочитать метаданные. Если не использовать простую программу чтения аннотаций, все вроде бы нормально.источник
В моем случае проблема была решена путем изменения кеша моих серверов с eAccelerator на APC . По-видимому, eAccelerator удаляет все комментарии из файлов, что нарушает ваши аннотации.
источник
opcache.save_comments=1
, может быть, она есть и для eAccelerator / APC?Я решил эту проблему, установив
$useSimpleAnnotationReader=false
при созданииMetaDataConfiguration
.источник
Большое спасибо Марку Фу и могоману
Я знал, что он должен быть где-то в config.yml ... и иметь возможность проверить его на
действительно помогло!
Фактически, эта команда просто останавливается на ошибке ... без обратной связи, но когда все в порядке, вы сможете увидеть все свои объекты в списке.
источник
Я разрешил то же исключение, удалив конфликтующий автоматически сгенерированный файл orm.php в папке Resources / config / doctrine пакета; согласно документации: «Пакет может принимать только один формат определения метаданных. Например, невозможно смешивать определения метаданных YAML с аннотированными определениями классов сущностей PHP».
источник
Очень высока вероятность того, что у вас установлен PHP 5.3.16 (Symfony 2.x не будет работать с ним). В любом случае вам следует загрузить страницу проверки на http://you.site.name/config.php. Если ваш проект не работал на сервере хостинга, следующие строки необходимо удалить в "config.php":
if (!in_array(@$_SERVER['REMOTE_ADDR'], array( '127.0.0.1', '::1', ))) { header('HTTP/1.0 403 Forbidden'); exit('This script is only accessible from localhost.'); }
Удачи!
источник
В моем случае я слишком усердствовал во время рефакторинга и удалил файл доктрины yml!
источник
В моем случае на моем Mac я использовал src / MainBundle / Resource / Config / Doctrine, конечно, он работал на Mac, но не работал на производственном сервере Ubuntu. После переименования Config в config и Doctrine в doctrine файлы сопоставления были найдены, и он начал работать.
источник
Я избавился от того же сообщения об ошибке, что и в вашем случае, используя app / console_dev вместо просто app / console
источник