как сделать пароль не обязательным FOS Bundle - PullRequest
0 голосов
/ 13 июня 2018

В моем проекте Symfony2, Как сделать пароль необязательным (не обязательным, но обязательным при добавлении нового профиля) при обновлении профиля пользователя с помощью FOS User Bundle из Symfony2

1 Ответ

0 голосов
/ 13 июня 2018

Вам придется переопределить форму профиля и определить только те поля, которые вам нужны.

Обновить конфигурацию для использования нового типа формы:

# app/config.yml
fos_user:
    #... other options
    profile:
        form:
            type: AppBundle\Form\Type\ProfileFormType

Я не уверен на 100%, я васможет потребоваться определить новый тип формы как службу:

# 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,
                ]
            )
        ;
    }
}

Конечно, необязательный пароль, скорее всего, не тот, который вам нуженВозможно, вы вообще не хотите показывать поле в форме, поэтому просто удалите его.

...