Проверка модели в symfony2 - PullRequest
0 голосов
/ 29 марта 2012

Я использую FOS User Bundle и хочу переопределить файл проверки FOS / UserBundle / Resources / config / validaiton.xml:

<constraint name="FOS\UserBundle\Validator\Unique">
    <option name="property">usernameCanonical</option>
    <option name="message">fos_user.username.already_used</option>
    <option name="groups">
        <!-- <value>Registration</value> -->
        <value>Profile</value>
    </option>
</constraint>

имя пользователя отсутствует в моемФорма регистрации (я просто установил ее скрытую), то есть проверка не должна выдавать никаких ошибок ...

Может быть, есть лучший способ удалить имя пользователя из формы ...

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Чтобы правильно удалить поле имени пользователя в форме, вы должны переопределить RegistrationFormType, создав свой собственный и расширив его из исходного FOSUserBundle

<?php
namespace Acme\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;

class RegistrationFormType extends BaseType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('email', 'email')
                ->add('plainPassword', 'repeated', array('type' => 'password'))

                // your other custom fields, if any.

    }
}

Теперь вы должны объявить переопределенныйсоздать как службу, а затем сообщить файлу конфигурации FOSUserBundle, что вы используете переопределенную форму. Вот полная документация .

1 голос
/ 29 марта 2012

Вы можете поместить информацию о проверке сущности в любой файл validation.yml.Так что вы можете сделать

#validation.yml
FQCN\Of\User\Entity:
  constraints:
    - FOS\UserBundle\Validator\Unique:
        property: usernameCanonical
        groups: [Profile]
        message: fos_user.username.already_used


  properties:
  # property validations here
...