在我的Symfony2项目中,如何使用Symfony2中的FOS用户软件包更新用户的配置文件时,非强制性密码(不是强制性的,但在添加新配置文件时是强制性的)
答案 0 :(得分:1)
您必须覆盖个人资料表单并仅定义您需要的字段。
更新配置以使用新表单类型:
# app/config.yml
fos_user:
#... other options
profile:
form:
type: AppBundle\Form\Type\ProfileFormType
我不是百分百肯定,我可能需要将新表单类型定义为服务:
# app/services.yml or other config file you define services in
services:
AppBundle\Form\Type\ProfileFormType:
arguments:
- '%fos_user.model.user.class%'
以您自己的表单类型定义字段:
// AppBundle/Form/Type/ProfileFormType.php
namespace AppBundle\Form\Type;
use FOS\UserBundle\Form\Type\ProfileFormType as FosProfileFormType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\FormBuilderInterface;
class ProfileFormType extends FosProfileFormType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add(
'firstname',
null,
[
'label' => 'form.label_firstname',
'required' => true,
]
)
->add(
'lastname',
null,
[
'label' => 'form.label_lastname',
'required' => true,
]
)
->add(
'password',
PasswordType::class,
[
'required' => false,
]
)
;
}
}
当然,非必需的密码很可能不是您想要的,可能您根本不想在表单中显示,所以只需将其删除即可。