2017-11-15 4 views
0

symfony 3.3のフォームレベルの検証で、大文字と小文字を区別しないようにする方法を見つけようとしています。これは選択肢の配列と比較しています。symfonyフォームの検証の選択肢大文字と小文字の区別がありません

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('title', CollectionType::class, [ 
      'entry_type' => ChoiceType::class, 
      'allow_add' => true, 
      'allow_delete' => true, 
      'entry_options' => array(
       'choices' => array(
           "Sample Option", 
           "Sample Option 2", 
           "Sample Option 3", 
           "Sample Option 4" 
          ) 
      ), 
      'error_bubbling' => false 
     ]); 

choicesの中のentry_optionsは、フォームの検証に使用している配列です。

私が探しているのは、 "sample option"や "sample Option"のように大文字小文字を区別しない値を渡して、フォームレベルの検証に合格することができるようにすることです。

ありがとうございました。

更新 - Kevinが言及したように、私はフレームワーク内でどのように更新する必要があるのか​​を理解することに興味があります。

+2

比較の前に選択肢と値を小文字に変換します。 – svgrafov

+1

@svgrafovこの質問は、Symfony Formsのコンテキスト内で値を小文字に変換できるかどうかを尋ねるようです。 –

答えて

0

他の誰かが同じような問題を抱えている場合に、データトランスフォーマをCollectionTypeとChoiceTypeで変換するのが難しくなった場合に、ここで何が起こったのでしょうか。

CollectionTypeを使用する代わりに、TextTypeに変更しました。これはデータトランスフォーマーを通過し、所望の結果を得ることができました。

$builder->add('title', TextType::class); 
0

DataTransformersを除いて、考慮する価値のある別のアプローチがあります。 Form Events。具体的にはFormEvents::PRE_SUBMITSymfony Docsから

FormEvents::PRE_SUBMITイベントがForm::submit()メソッドの開始時に送出されます。

それはに使用することができます:フォームにデータを送信する前に、要求から

  • 変更データを、
  • フォームにデータを送信する前に、フォームフィールドを追加または削除します。

これは効果的任意の形式レベルの検証に先行することになります。

関連する問題