2015-04-30 3 views
1

Я следующий композитор файла:Symfony Validators не загружается?

{ 
    "require": { 
    "doctrine/orm": "2.4.*", 
    "doctrine/migrations": "1.0.*@dev", 
    "symfony/validator": "2.8.*@dev", 
    "slim/slim": "~2.6", 
    "freya/freya-exception": "0.0.7", 
    "freya/freya-loader": "0.2.2", 
    "freya/freya-templates": "0.1.2", 
    "freya/freya-factory": "0.0.8" 
    }, 
    "autoload": { 
    "psr-4": {"": ""} 
    } 
} 

И я создал следующий Entity, или как я их называю модель:

namespace App\Models; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Validation; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
* @ORM\Table(name="users") 
*/ 
class User { 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=32, nullable=false) 
    */ 
    protected $firstName; 

    /** 
    * @ORM\Column(type="string", length=32, nullable=false) 
    */ 
    protected $lastName; 

    /** 
    * @ORM\Column(type="string", length=100, unique=true, nullable=false) 
    */ 
    protected $userName; 

    /** 
    * @ORM\Column(type="string", length=100, unique=true, nullable=false) 
    * @Assert\Email 
    */ 
    protected $email; 

    /** 
    * @ORM\Column(type="string", length=500, nullable=false) 
    */ 
    protected $password; 

    ... 
} 

Теперь, когда я бегу "vendor/bin/doctrine" migrations:diff я получаю сообщение об ошибке:

[Doctrine\Common\Annotations\AnnotationException] 
    [Semantical Error] The annotation "@Symfony\Component\Validator\Constraints\Email" in property App\Models\User::$email does not exist, or could not be auto-loaded. 

В документации для Symfony не указано ничего о том, как правильно установить это, кроме их github page и t На самом деле, на самом деле, эти данные соответствуют действительности.

Так почему я получаю эту ошибку? Я посмотрел и класс существует под списком валидаторов, установленных ...

ответ

2

кажется, что вам нужно немного клея, чтобы заставить его работать с самозагрузкой вашей микрокаркас в:

\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

Link to information, что может будет полезен.

+0

Это все еще оставляет мне ту же проблему. – TheWebs

+0

Вам нужно «потребовать» его: '$ loader = require __DIR__. '/../ vendor/autoload.php'; 'Убедитесь, что ваш путь верен. – keyboardSmasher

+0

Извините, что я удалил свой ответ, но теперь, похоже, что он работает - или, по крайней мере, этот вызов работает, но все же остается, нужно ли мне помещать этот код в какой-то конкретный? Как и bootstrap.php, который у меня есть или в Entity? – TheWebs

Смежные вопросы