我正在使用Sonata管理员,Sonata用户和FOS Bundle。 我设法覆盖UserAdmin实体以显示我在显示/编辑用户时需要的字段,但我需要覆盖登录表单。
基本上,我需要用户使用用户名登录,以及密码和PIN码的组合。 我按照本教程http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_forms.html进行了尝试,并尝试使用注册表单,但无论我做什么,我仍然拥有相同的原始字段。
我的内核文件使用:
new FOS\UserBundle\FOSUserBundle(),
new Application\FOS\UserBundle\ApplicationFOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new UserBundle\UserBundle(), //my custom bundle where I define my entity, my UserAdmin...
我的自定义表单,它没有实现getParent()来使用我自己的字段,如doc所述:
<?php
namespace UserBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('pinCode');
}
public function getName()
{
return 'app_user_registration';
}
}
宣布服务
<service id="coupons_user.registration.form.type" class="UserBundle\Form\RegistrationFormType">
<tag name="form.type" alias="app_user_registration" />
<argument>%fos_user.model.user.class%</argument>
</service>
表单在FOS配置中声明:
registration:
form:
type: app_user_registration
但无论我尝试什么,都没有变化......我知道我做错了什么......但在哪里? 是否与登录表单的过程相同?如何覆盖此表单以显示我的字段?然后,什么是覆盖控制器以检查三元组用户名/密码/ PIN是否正确的最佳方法?