私のExampleUserBundle
拡張しFOSUserBundle
ます。そして、私はこのようにオーバーライドしますRegistrationFormType
:
<?php
// Example/UserBundle/Form/Type/RegistrationFormType.php
namespace Example\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
parent::buildForm($builder, $options);
$builder->remove('username');
}
public function getName() {
return 'example_user_registration';
}
}
サービスの宣言:
// Example/UserBundle/Ressources/Config/services.yml
services:
example_user.registration.form.type:
class: Example\UserBundle\Form\Type\RegistrationFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: example_user_registration }
そして /app/config/config.yml で:
fos_user:
db_driver: orm
firewall_name: main
user_class: Example\UserBundle\Entity\User
registration:
form:
type: example_user_registration
このフォームで新しいフォームを作成するUser
と、基本的な検証ルールはFOSUserBundle
上書きされません。(電子メール -> 一意; パスワード -> 3 文字以上; ...)。