私はSymfonyプロジェクトにFOSUserBundleをインストールしました。今度は、デフォルトでFOSUserBundleによって提供される登録フォームフィールドを削除したいと思います。フォームフィールドをFOSUserBundle Symfony2.8から削除するには?
登録フォームのフィールドは、次のとおりです。
ユーザー名
メール同上
パスワード
繰り返しパスワード
ユーザーさて、私はEmail
フィールドを望んでいませんレジスター私は自分のバンドルの登録フォームを上書きします。
\\ Front\FrontBundle\Form\RegistrationType.php
<?php
namespace Front\FrontBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->remove('email'); // here I code for remove email field.
}
public function getParent()
{
return 'FOS\UserBundle\Form\Type\RegistrationFormType';
// Or for Symfony < 2.8
// return 'fos_user_registration';
}
public function getBlockPrefix()
{
return 'app_user_registration';
}
// For Symfony 2.x
public function getName()
{
return $this->getBlockPrefix();
}
}
、私はそうした後、それはだ、この電子メールフィールドで行われ、私の登録フォームから削除しますが、私はusername
を充填した後、フォームを送信すると、password
、repeat password
config.ymlとservices.ymlファイル
\\ App/config/config.yml
fos_user:
db_driver: orm
firewall_name: main
user_class: Front\FrontBundle\Entity\User
registration:
form:
type: Front\FrontBundle\Form\RegistrationType
\\app/config/services.yml
services:
app.form.registration:
class: Front\FrontBundle\Form\RegistrationType
tags:
- { name: form.type, alias: app_user_registration }
を変更The email is not valid
というエラーを私に与えてください。
他のファイルを変更して、電子メールフィールドで電子メールの検証を削除する必要がありますか?
ありがとうございました。
'email'はFOSUserが延びにご提供モデルの必須項目です。あなたがそれを望まないなら、FOS \ UserBundle \ Model \ Userを拡張しないでください。 – Federkun
@Federico詳しく説明できますか?どのファイルを変更する必要がありますか? – Dhaval
'email'はFOSUserBundleから提供される抽象化で定義されているので、あなたはかなり強制的にそれを使う必要があります。単純な解決策は、モデルのsetUsernameメソッドをオーバーライドし、偽の(有効でユニークな)電子メールをここに設定することです。 – Federkun