<?php
namespace Customize\Form\Type\Front;
use Eccube\Common\EccubeConfig;
use Eccube\Entity\Customer;
use Customize\Form\Type\AddressType;
use Customize\Form\Type\KanaType;
use Eccube\Form\Type\Master\JobType;
use Eccube\Form\Type\Master\SexType;
use Customize\Form\Type\NameType;
use Eccube\Form\Type\PhoneNumberType;
use Eccube\Form\Type\PostalType;
use Customize\Form\Type\RepeatedEmailType;
use Eccube\Form\Type\RepeatedPasswordType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\BirthdayType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;
// 追加
use Eccube\Common\Constant;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
class EntryType extends AbstractType
{
/**
* @var EccubeConfig
*/
protected $eccubeConfig;
/**
* EntryType constructor.
*
* @param EccubeConfig $eccubeConfig
*/
public function __construct(EccubeConfig $eccubeConfig)
{
$this->eccubeConfig = $eccubeConfig;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', NameType::class, [
'required' => false,
])
->add('kana', KanaType::class, [
'required' => false,
])
->add('postal_code', PostalType::class, [
'required' => false,
'constraints' => [
new Assert\NotBlank(),
],
])
->add('address', AddressType::class, [
'required' => false,
])
->add('company_name', TextType::class, [
'required' => false,
])
->add('phone_number', TextType::class, [
'required' => false,
'constraints' => [
new Assert\NotBlank(),
],
])
->add('phone2', TextType::class, [
'required' => false,
])
->add('email', RepeatedEmailType::class)
->add('plain_password', RepeatedPasswordType::class)
;
$mailmagaFlg = null;
/** @var Customer $Customer */
$Customer = $builder->getData();
if ($Customer instanceof Customer && $Customer->getId()) {
$mailmagaFlg = $Customer->getMailmagaFlg();
}
$moptions = [
'label' => 'admin.mailmagazine.customer.label_mailmagazine',
'choices' => [
'希望する' => Constant::ENABLED,
'希望しない' => Constant::DISABLED,
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank(),
],
'mapped' => true,
'eccube_form_options' => [
'auto_render' => true,
'form_theme' => '@MailMagazine42/admin/mailmagazine.twig',
],
];
if (!is_null($mailmagaFlg)) {
$moptions['data'] = $mailmagaFlg;
}
$builder->add('mailmaga_flg', ChoiceType::class, $moptions);
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
$form = $event->getForm();
/** @var Customer $Customer */
$Customer = $event->getData();
if ($Customer->getPlainPassword() != '' && $Customer->getPlainPassword() == $Customer->getEmail()) {
$form['plain_password']['first']->addError(new FormError(trans('common.password_eq_email')));
}
});
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'Eccube\Entity\Customer',
]);
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
// todo entry,mypageで共有されているので名前を変更する
return 'entry';
}
}