2015-07-29 1 views
0

Доброе утро, Я расширил свой пакет FOS и создаю форму для подзаголовка, все работает хорошо, кроме ошибок, связанных с именем пользователя, не связаны с полем, они находятся в верхней части формы. Я использую просто аннотацию как * @Assert \ NotBlank(). Он отлично работает с ошибками электронной почты, но не для $ username. Спасибо за помощь.Symfony: общая ошибка вместо закрытия соответствующего ввода (имя пользователя fos)

namespace ***\UserFosBundle\Form\Type; 

use Symfony\Component\Form\AbstractType; 
use ***\UserFosBundle\Form\Type\InfosPersonFormType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class RegistrationFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 

      ->add('userName', 'text', array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle')) 
      // ->add('firstName', 'text', array('label' => 'form.firstName', 'translation_domain' => 'FOSUserBundle')) 
      ->add('email', 'email', array('translation_domain' => 'FOSUserBundle')) 

      ->add('plainPassword', 'repeated', array(
       'type' => 'password', 
       'options' => array('translation_domain' => 'FOSUserBundle'), 
       'first_options' => array('label' => 'form.password'), 
       'second_options' => array('label' => 'form.password_confirmation'), 
       'invalid_message' => 'fos_user.password.mismatch', 
      )) 

     ; 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'OSF\UserFosBundle\Entity\User', 
      'validation_groups' => array('Default', 'Registration') 
     )); 
    } 

    // BC for SF < 2.7 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $this->configureOptions($resolver); 
    } 

    public function getName() 
    { 
     return 'fos_user_registration'; 
    } 
} 

и сущность

<?php 

namespace ***\UserFosBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 

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

/** 
* User 
* @ORM\Entity 
* @ORM\Table(name="users") 
* @UniqueEntity("username") 
* @UniqueEntity("email") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    protected $facebookId; 

    /** 
    * le login pour la connexion 
    * @var string 
    * 
    * @Assert\Length(min = "2", max = "255", minMessage = "form.error.atLeast", maxMessage = "form.error.noMore") 
    */ 
    protected $username; 


    /** 
    * @var string 
    * @Assert\NotNull() 
    * @Assert\Email(message = "form.error.email", checkMX = true) 
    */ 
    protected $email; 

    /** 
    * Plain password. Used for model validation. Must not be persisted. 
    * 
    * @var string 
    * @Assert\NotNull() 
    * @Assert\Regex(pattern="/[A-Z]/", message="form.error.maj") 
    * @Assert\Regex(pattern="/[0-9]/", message="form.error.number") 
    * @Assert\Length(min = "7", max = "255", minMessage = "form.error.atLeastOnenumber", maxMessage = "form.error.noMore") 
    */ 
    protected $plainPassword; 

    /** 
    * @ORM\OneToMany(targetEntity="OSFAPI\Bundle\NotificationBundle\Entity\Notification", mappedBy="user") 
    */ 
    protected $notifications; 

    /** 
    * @ORM\OneToMany(targetEntity="OSFAPI\Bundle\NotificationBundle\Entity\Device", mappedBy="user") 
    */ 
    protected $devices; 

    /** 
    * [$person description] 
    * @var [type] 
    * @ORM\OneToOne(targetEntity="OSF\PersonBundle\Entity\Person", mappedBy="userfos") 
    */ 
    protected $person; 
    /** 
    * Constructor 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->notification = new \Doctrine\Common\Collections\ArrayCollection(); 
     $this->devices = new \Doctrine\Common\Collections\ArrayCollection(); 
     $this->mobilenotifications = new \Doctrine\Common\Collections\ArrayCollection(); 

    } 
+0

Добавить фрагменты кода из вашего кода. –

+0

ОК, но я думаю, что это больше проблема из FOS, чем моего кода. – bormat

+0

Вы пытались использовать 'username' вместо' userName' (от имени поля формы)? –

ответ

0

Риск был прав, я просто нужен нижний регистр 'N'.

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