webcode-labサイトロゴ

  • お問い合わせへのリンクバナー

Webcode Laboratory
for website coding & program & seo;

Topics

この Blog CMS について
EC-CUBE3 フォームバリデーション 必須設定 と ラジオボタンのプレースホルダ表示(Symfony2 FormBuilder) eyecatch画像

EC-CUBE3 フォームバリデーション 必須設定 と ラジオボタンのプレースホルダ表示(Symfony2 FormBuilder)

rss
 

EC-CUBE3 フォームバリデーション必須設定(Symfony2 FormBuilder)

EC-CUBE LOGO

※EC-CUBEは株式会社ロックオンの商標です


FormBuilderのconstraintsオプションで、必須設定をするお話です。
入力の際 「入力必須」にし、入力が空欄でメッセージを出したい場合に設定します。

Symfony2でFormTypeのオプションに付与する場合を調べると、

$builder
  ->add('name', 'text', array(
    'label' => '名称',
    'required' => true, ← 必須設定
    'empty_data' => null,
    'constraints' => array(
      new Assert\NotBlank(), ← 必須設定
    ),
  ));

のように、FormBuilderのメンバーのオプションに、
'required' => true
を付与、
constraintsオプションに、
'constraints' => array(
      new Assert\NotBlank(),
)

を付与する、と解説にあります。

ただEC-CUBE3で必須設定の場合、
'required' => true
はなくても問題なく、 constraints NotBlank オプションのみで必須バリデーションは動くようです。
 required オプションの設定が関係するのは、次項のラジオボタンのプレースホルダ表示のようです。



 


 

EC-CUBE3 フォーム ラジオボタンのプレースホルダ表示の設定

ラジオボタンの場合、
required オプションの設定で、プレースホルダー表示が変わるようです。

例えばラジオボタンで、 requiredオプションの設定なし(または'required' => true を設定)で、
Post Entity:

$builder
  ->add('name', 'entity', array(
    'class' => 'Eccube\Entity\〇〇',
    'property' => 'Name',
    'label' => '名称',
    'multiple' => false, ← ラジオボタン
    'expanded' => true, ← ラジオボタン
    'mapped' => false,
    'choices' => array(
      '1' => '男',
      '2' => '女'
    ),
    'placeholder' => '選択なし', ← プレースホルダ
  ));

とすると、ラジオボタンの選択肢は、
「男」「女」どちらかしか選択できず、プレースホルダーの「選択なし」が表示されないので、
一度「男」か「女」を選択してしまうと、選択をどちらも外すということができません。

ラジオボタン選択外せない例画像
プレースホルダー表示がないFORM

必須入力だとこれでもいいのですが、任意入力の場合は困ります。



そこで、プレースホルダーの「選択なし」を表示し選択できる状態にしたい場合、
'required' => false,
をオプションに付与で、
プレースホルダの表示・選択が可能になります。
Post Entity:

$builder
  ->add('name', 'entity', array(
    'class' => 'Eccube\Entity\〇〇',
    'property' => 'Name',
    'label' => '名称',
    'multiple' => false, ← ラジオボタン
    'expanded' => true, ← ラジオボタン
    'mapped' => false,
    'choices' => array(
      '1' => '男',
      '2' => '女'
    ),
    'placeholder' => '選択なし', ← プレースホルダ
    'required' => false, ← 必須なし設定
  ));
 
ラジオボタン選択外せる例画像
プレースホルダー表示がされたFORM




 こういう小さなところではまることが多いので、覚書でした。


 


ページの先頭へ

rss
1件目 (1件中)