Доброе утро, Я расширил свой пакет 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();
}
Добавить фрагменты кода из вашего кода. –
ОК, но я думаю, что это больше проблема из FOS, чем моего кода. – bormat
Вы пытались использовать 'username' вместо' userName' (от имени поля формы)? –