<?php
namespace App\Form\Account;
use App\Entity\Account\Account;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Contracts\Translation\TranslatorInterface;
class OwnerRegistrationType extends AbstractType
{
private TranslatorInterface $translatable;
public function __construct(
TranslatorInterface $translatable
) {
$this->translatable = $translatable;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('email', RepeatedType::class, [
"type" => EmailType::class,
"invalid_message" => $this->translatable->trans('contact.validate.email_match_invalid'),
"first_options" => [
"label" => $this->translatable->trans('contact.label.email'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank')
]),
new Email([
"mode" => "html5",
"message" => $this->translatable->trans('contact.validate.email_invalid')
])
]
],
"second_options" => [
"label" => $this->translatable->trans('contact.label.email_confirm'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank')
]),
new Email([
"mode" => "html5",
"message" => $this->translatable->trans('contact.validate.email_invalid')
])
]
]
])
->add('plain_password', RepeatedType::class, [
"type" => PasswordType::class,
"invalid_message" => $this->translatable->trans('contact.validate.password_match_invalid'),
"mapped" => false,
"first_options" => [
"label" => $this->translatable->trans('contact.label.password'),
"help" => $this->translatable->trans('contact.label.password_help'),
"constraints" => [
new Length([
"min" => 8,
"minMessage" => $this->translatable->trans('contact.validate.length_invalid'),
])
]
],
"second_options" => [
"label" => $this->translatable->trans('contact.label.password_confirm'),
"constraints" => [
new Length([
"min" => 8,
"minMessage" => $this->translatable->trans('contact.validate.length_invalid'),
])
]
]
])
->add('agree', CheckboxType::class, [
"label" => $this->translatable->trans('contact.label.agree'),
"mapped" => false,
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.agree'),
])
]
])
->add('owner', OwnerType::class, [
'add_status' => false
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Account::class,
]);
}
}