<?php
namespace App\Form\Account;
use App\Entity\Account\Owner;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Contracts\Translation\TranslatorInterface;
class OwnerType extends AbstractType
{
private TranslatorInterface $translatable;
public function __construct(
TranslatorInterface $translatable
) {
$this->translatable = $translatable;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('companyName', TextType::class, [
"label" => $this->translatable->trans('contact.label.company_name'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 64,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('companyKana', TextType::class, [
"label" => $this->translatable->trans('contact.label.company_kana'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 128,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('managerName', TextType::class, [
"label" => $this->translatable->trans('contact.label.manager_name'),
"required" => false,
"constraints" => [
new Length([
"max" => 48,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('representativeName', TextType::class, [
"label" => $this->translatable->trans('contact.label.representative_name'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 32,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('representativeKana', TextType::class, [
"label" => $this->translatable->trans('contact.label.representative_kana'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 32,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('chargerName', TextType::class, [
"label" => $this->translatable->trans('contact.label.charger_name'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 32,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('address', TextType::class, [
"label" => $this->translatable->trans('contact.label.address'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 255,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('url', TextType::class, [
"label" => $this->translatable->trans('contact.label.url'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 255,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
->add('phone', TextType::class, [
"label" => $this->translatable->trans('contact.label.phone'),
"constraints" => [
new NotBlank([
"message" => $this->translatable->trans('contact.validate.not_blank'),
]),
new Length([
"max" => 16,
"maxMessage" => $this->translatable->trans('contact.validate.length_over'),
])
]
])
;
if(true === $options['add_status']) {
$builder->add('status', ChoiceType::class, [
"label" => $this->translatable->trans('contact.label.status'),
"choices" => array_flip(Owner::getStatusArray()),
]);
}
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Owner::class,
'add_status' => false
]);
}
}