app/Plugin/CustomerPlus/Form/Type/TelTypeSimple.php line 16

Open in your IDE?
  1. <?php
  2. namespace Plugin\CustomerPlus\Form\Type;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type\TextType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\Form\FormInterface;
  7. use Symfony\Component\Form\FormView;
  8. use Symfony\Component\OptionsResolver\OptionsResolver;
  9. use Symfony\Component\Form\DataTransformerInterface;
  10. /**
  11.  * シンプルな電話番号入力フィールド(単一フィールド + JavaScript)
  12.  */
  13. class TelTypeSimple extends TextType implements DataTransformerInterface
  14. {
  15.     public function buildForm(FormBuilderInterface $builder, array $options)
  16.     {
  17.         parent::buildForm($builder$options);
  18.         $builder->addModelTransformer($this);
  19.     }
  20.     public function buildView(FormView $viewFormInterface $form, array $options)
  21.     {
  22.         parent::buildView($view$form$options);
  23.         
  24.         // JavaScript用のデータを追加
  25.         $view->vars['attr']['data-tel-type'] = 'simple';
  26.     }
  27.     public function configureOptions(OptionsResolver $resolver)
  28.     {
  29.         parent::configureOptions($resolver);
  30.         $resolver->setDefaults([
  31.             'block_name' => 'customerplus_tel_simple',
  32.         ]);
  33.     }
  34.     /**
  35.      * フォームから受け取った文字列データをそのまま返す
  36.      */
  37.     public function transform($value)
  38.     {
  39.         return $value ?: '';
  40.     }
  41.     /**
  42.      * 文字列データをそのまま返す
  43.      */
  44.     public function reverseTransform($value)
  45.     {
  46.         return $value ?: '';
  47.     }
  48.     public function getBlockPrefix()
  49.     {
  50.         return 'customerplus_tel_simple';
  51.     }
  52. }