Доктрина исключения (Symfony2)

На localhost работает все отлично. Но при загрузке на сервер выдает эту ошибку. Что может быть не так?

Неопределенное исключение «Doctrine \ Common \ Persistence \ Mapping \ MappingException» с сообщением «Класс« Acme \ DemoBundle \ Entity \ User »не найден в настроенных цепочках пространств имен FOS \ UserBundle \ Entity, Acme \ BazaBundle \ Entity, FOS \ UserBundle \ Model»

http://baza.sysit.com.ua/web/

config.yml:

 fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Acme\DemoBundle\Entity\User

0

Решение

Это потому, что вы ссылаетесь на класс в пакете, который не зарегистрирован. Вы, вероятно, удалили инициализацию для AcmeDemoBundle в AppKernel.php, но она все еще ссылается на нее в вашей конфигурации FOSUser.

Вам нужно будет создать сущность User для вашего пакета и сослаться на нее в параметре user_class в fos_user, или если вы используете AcmeDemoBundle для хранения вашей сущности User, то просто повторно инициализируйте ее в вашем AppKernel.php

0

Другие решения

Пакет Acme по умолчанию доступен только в средах разработки и тестирования. Пока вы работаете на своем локальном хосте, это не проблема. Вероятно, вы работаете в среде разработки и в вашем app_kernel.php Acme \ DemoBundle настроен на инициализацию только тогда, когда среда является dev или test. Так что работает просто отлично.

На вашем сервере вы не получаете доступ к вашему сайту через localhost. это означает, что среда разработки недоступна. Вы работаете в производственной среде. Как я объяснил выше, производственная среда не имеет инициализированной Acme \ DemoBundle, поэтому она не может найти вашу пользовательскую сущность.

Есть 2 возможности:

  • перейдите в ваш app-kernel.php:
    найдите строку «$ bundles [] = new Acme \ DemoBundle \ AcmeDemoBundle ();» и удали его. Затем добавьте следующую строку («new Acme \ DemoBundle \ AcmeDemoBundle (),») к первому массиву пакетов.

  • создайте новый пакет и добавьте его в ваш app.kernel.php и поместите свой класс User в этот пакет.

Если вы просто создаете веб-сайт для личного использования, первый вариант может быть самым быстрым и лучшим вариантом, но если вы хотите, чтобы ваши пакеты назывались хорошими, вам следует использовать последний.
удачи

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector