Il y a déjà d'autres questions sur ce sujet, mais aucune d'entre elles n'a été vraiment utile. Je suis nouveau sur Symfony, il est donc difficile de comprendre.
Je suis dans le fichier Client\IntranetBundle\LDAP\LDAPAuthenticationProvider.php et ce code provoque une erreur:
$user = new LDAPUser($username);
J'ai ajouté son espace de noms qui est:
use Client\IntranetBundle\LDAP\LDAPUser;
LDAPUser implémente UserInterface
L'erreur que je reçois est
The class 'Client\IntranetBundle\LDAP\LDAPUser' was not found in the chain
configured namespaces Client\ClientBundle\Entity
Qu'est-ce que c'est supposé vouloir dire? D'après ce que j'ai lu, cela a quelque chose à voir avec la cartographie.
Ma doctrine dans le fichier config.yml est définie sur:
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
J'espère que vous pourrez m'aider.
EDIT # 1 :
En fait, j'ai découvert que ce n'était pas
$user = new LDAPUser($username);
Cela cause l’erreur, mais c’est quand j’essaie de conserver cette entité:
$entityManager->persist($user);
EDIT # 2:
Je suis confus avec ce qui ne va pas avec la cartographie:
<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>
C'est peut-être parce que je saute entre deux ballots?
Par défaut, la fonctionnalité auto_mapping
recherche des entités sous l'espace de noms Entity
. Par conséquent, étant donné que votre entité n'y est pas, Doctrine n'en sait rien.
Vous devez placer votre entité dans l'espace de noms Entity
ou configurer Doctrine à la main pour ajouter votre espace de noms d'entité personnalisé. De cette façon, vous perdez la fonctionnalité auto_mapping
. Vous devrez donc enregistrer chaque paquet manuellement:
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
Comme vous pouvez le constater, il est préférable de tout placer sous l’espace de noms Entity
dans votre paquet et de laisser Doctrine faire le gros du travail.
juste pour aider plus de vous. J'ai cherché partout pour corriger cette erreur dans mon projet.
Il s’est avéré que j’ai commis une erreur en oubliant d’ajouter des bundles distants dans "vendor" dans mon fichier AppKernel.
Ils n'étaient pas enregistrés dans la fonction "registerBundles".
J'espère que celui-ci vous aide tous!