Есть еще некоторые вопросы по этому вопросу, но никто из них не был действительно полезен. Я новичок в Symfony, так что довольно сложно окунуться в нее.
Я попал в файл Client \ IntranetBundle \ LDAP \ LDAPAuthenticationProvider.php, и этот код вызывает ошибку:
$user = new LDAPUser($username);
Я добавил, что это пространство имен, которое:
use Client\IntranetBundle\LDAP\LDAPUser;
LDAPUser реализует UserInterface
Ошибка, которую я получаю
The class 'Client\IntranetBundle\LDAP\LDAPUser' was not found in the chain configured namespaces Client\ClientBundle\Entity
Что это значит? Из того, что я читаю, это связано с отображением.
Моей доктрины orm в config.yml установлено значение:
orm: auto_generate_proxy_classes: %kernel.debug% auto_mapping: true
Надеюсь, вы можете мне помочь.
EDIT # 1 :
На самом деле, я узнал, что это не
$user = new LDAPUser($username);
Это вызывает ошибку, но именно когда я пытаюсь сохранить этот объект:
$entityManager->persist($user);
РЕДАКТИРОВАТЬ № 2:
Я смущен тем, что не так с отображением:
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="Client\IntranetBundle\LDAP\LDAPUser" table="users" repository-class="Client\ClientBundle\Repository\UserRepository"> <id name="id" type="integer" column="id"> <generator strategy="AUTO" /> </id> <field name="username" column="username" type="string" length="100" /> </entity>
Может, это потому, что я прыгаю между двумя пучками?
По умолчанию функция auto_mapping
ищет объекты под пространством имен Entity
, поэтому, если ваша сущность не существует, Doctrine ничего об этом не знает.
Вам нужно поместить вашу сущность в пространство имен Entity
или настроить Doctrine вручную, чтобы добавить ваше собственное пространство имен имен. Таким образом вы теряете функцию auto_mapping
, поэтому вам нужно будет зарегистрировать каждый комплект вручную:
orm: auto_generate_proxy_classes: %kernel.debug% entity_managers: default: mappings: MyBundle: type: annotation custom_mapping: type: annotation prefix: Client\IntranetBundle\LDAP\ dir: "%kernel.root_dir%/src/Client/IntranetBundle/LDAP/" is_bundle: false
Как вы можете видеть, лучше разместить все под пространством имен Entity
в своем комплекте и позволить Doctrine выполнять тяжелую работу.
просто чтобы помочь вам больше. Я искал повсюду, чтобы исправить эту ошибку в моем проекте.
Оказывается, моя ошибка заключалась в том, что я забыл добавить удаленные пакеты / пакеты в «vendor» внутри моего файла AppKernel.
Они не были зарегистрированы в функции registerBundles.
Надеюсь, это поможет всем вам!