2012-03-06 3 views
4

Я пытаюсь использовать валидаторы FOSUserBundle в своей собственной форме, но я не знаю, как настроить validator.yml. В настоящее время она выглядит следующим образом:Symfony2: Как использовать валидаторы другого пакета

Acme\UserBundle\Entity\User: 
    constraints: 
     - FOS\UserBundle\Validator\Unique: 
      property: usernameCanonical 
     - FOS\UserBundle\Validator\Unique: 
      property: emailCanonical 
    properties: 
     username: 
      - NotBlank: ~ 
     email: 
      - Email: ~ 
      - NotBlank: ~ 
     mandant: 
      - NotBlank: ~ 
      - Type: Acme\UserBundle\Entity\Mandant 

Но это приводит к следующей ошибке PHP:

[05-Mar-2012 14:47:56 UTC] PHP Stack trace: 
[05-Mar-2012 14:47:56 UTC] PHP 1. {main}() W:\redacted\symfony_webfrontend\app\console:0 
[05-Mar-2012 14:48:10 UTC] PHP Fatal error: Class 'FOS\UserBundle\ValidatorUnique' not found in W:\redacted\symfony_webfrontend\vendor\symfony\src\Symfony\Component\Validator\Mapping\Loader\FileLoader.php on line 73 

Это выглядит как путь класса неправильно, но я не могу найти какую-либо документацию о том, как использовать валидаторы другого пучка в моем собственном validators.yml ...

+0

Имейте loog в сервисах, определенных FOS User Bundle. Возможно, это валидаторы - это службы, и вам нужно использовать идентификатор службы вместо реального имени класса. Впрочем, просто дикая догадка! – Sgoettschkes

ответ

1

Не знаю, почему он на самом деле работает, потому что я попытался это раньше, но это, кажется, путь:

namespaces: 
    FOSUserBundle: FOS\UserBundle\Validator\ 

Acme\UserBundle\Entity\User: 
    constraints: 
     - "FOSUserBundle:Unique": 
      property: usernameCanonical 
     - "FOSUserBundle:Unique": 
      property: emailCanonical 
    properties: 
     username: 
      - NotBlank: ~ 
     email: 
      - Email: ~ 
      - NotBlank: ~ 
     Mandant: 
      - NotBlank: ~ 
      - Type: Acme\UserBundle\Entity\Mandant 
+0

Как и в случае с комментарием Boo, первоначально вы пытались напрямую обращаться к валидаторам, на этот раз (правильно) используя экземпляры служб этих валидаторов. – MadManMonty

+0

Wow, для меня все еще выглядит так, что я просто говорю Symfony, какой класс, в котором мне нужно пространство имен ... Я просто объявляю сокращенное (FOSUserBundle) пространство имен и продолжаю использовать это вместо полного пространства имен. – Strayer

+0

Обновление! FOSUserBundle больше не имеет уникального Validator для этого: https://github.com/FriendsOfSymfony/FOSUserBundle/commit/7dffdd8f095b9ee4a9f8fdd3a8e1e3ee69450cf1 – Bendihossan

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