2015-04-08 1 views
0

Je suis passé par la documentation d'un voulais ajouter mon propre fournisseur d'utilisateur (juste pour comprendre la chose trou) classe juste appelé compte et aucun utilisateurentités générées par la doctrine de l'interface utilisateur semble mal dans Symfony2

Alors je l'ai fait comme la documentation dit: http://symfony.com/doc/current/cookbook/security/entity_provider.html

Après avoir appelé php app/console doctrine:generate:entities BaseBundle/Entity/Account les méthodes getter et setter a été créé.

J'ai édité le fichier security.yml et j'ai regardé l'interface. FatalErrorException en ligne Account.php 243: Erreur d'analyse: erreur de syntaxe, unexpected '$', attend variable (T_VARIABLE)''

public function set0($0) 
{ 
    $this->0 = $0; 

    return $this; 
} 

Pourquoi est-ce générée par la doctrine? Il n'y avait pas de variable « 0 »

Lorsque je supprime le getter et setter pour 0 la nouvelle erreur est: Property Runalyze\BaseBundle\Entity\Account::$0 does not exist Je pense que dans ce contexte, le 0 vient, quand je ne suis pas authentifié? Je commence juste avec symfony2 et je voudrais le comprendre. Qu'est-ce que je me suis trompé? exécutant la version de symfony est 2.6

Pour la dernière "erreur" la trace de la pile at ReflectionProperty ->__construct ('Runalyze\BaseBundle\Entity\Account', '0') in vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php at line 82 at RuntimeReflectionService ->getAccessibleProperty ('Runalyze\BaseBundle\Entity\Account', '0') in vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php at line 893 at ClassMetadataInfo ->wakeupReflection (object(RuntimeReflectionService)) in vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php at line 537

propriétés de classe // Runalyze/BaseBundle/Entité/Account.php espace de noms Runalyze \ BaseBundle \ entité;

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Security\Core\User\UserInterface; 

/** 
* @ORM\Table(name="app_account") 
*  @ORM\Entity(repositoryClass="Runalyze\BaseBundle\Entity\AccountRepository") 
*/ 
class Account implements UserInterface, \Serializable 
{ 
/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(type="string", length=25, unique=true) 
*/ 
private $username; 

/** 
* @ORM\Column(type="string", length=64) 
*/ 
private $password; 

/** 
* @ORM\Column(type="string", length=60, unique=true) 
*/ 
private $email; 

/** 
* @ORM\Column(name="is_active", type="boolean") 
*/ 
private $isActive; 
+0

Il doit y avoir une sorte de faute de frappe dans vos propriétés de classe. Pouvez-vous nous fournir vos propriétés de classe seulement, pas besoin des méthodes get/set. – Artamiel

+0

@Andariel Voir l'article mis à jour – mipapo

+0

Bonjour, @mipapo. Je voulais dire les propriétés de classe de ** Entity \ Account ** cause, là où votre erreur semble être. Fondamentalement, lorsque vous exécutez la commande de génération d'entités, le script recherche les propriétés et les annotations de votre classe et, sur cette base, crée vos méthodes get/set. – Artamiel

Répondre

1

Bon, je ne sais pas comment cela est arrivé, mais: je trouve un fichier Resources/config/doctrine/Account.orm.yml Je ne sais pas quand cela a été généré, mais il y avait un champ « 0 ». J'ai supprimé le fichier et relance la génération du getter et du setter. Cela a bien fonctionné.

Mais merci à @Andariel pour avoir essayé de trouver mon erreur!

+1

Lorsque vous générez des entités, vous pouvez choisir d'utiliser des annotations, yml ou xml. Il n'est pas rare de générer accidentellement un fichier par erreur. Les fichiers yml sont cachés hors de la vue et remplacent les annotations que vous essayez d'utiliser sans avertissement. Ce n'est pas une erreur rare. – Cerad

+0

Merci pour votre explication @Cerad – mipapo