<?php
namespace Plugin\CustomerPlus\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\DataTransformerInterface;
/**
* シンプルな電話番号入力フィールド(単一フィールド + JavaScript)
*/
class TelTypeSimple extends TextType implements DataTransformerInterface
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->addModelTransformer($this);
}
public function buildView(FormView $view, FormInterface $form, array $options)
{
parent::buildView($view, $form, $options);
// JavaScript用のデータを追加
$view->vars['attr']['data-tel-type'] = 'simple';
}
public function configureOptions(OptionsResolver $resolver)
{
parent::configureOptions($resolver);
$resolver->setDefaults([
'block_name' => 'customerplus_tel_simple',
]);
}
/**
* フォームから受け取った文字列データをそのまま返す
*/
public function transform($value)
{
return $value ?: '';
}
/**
* 文字列データをそのまま返す
*/
public function reverseTransform($value)
{
return $value ?: '';
}
public function getBlockPrefix()
{
return 'customerplus_tel_simple';
}
}