2016-04-06 12 views
0

に検証しません、私はそれはメッセージが20未満である場合に送信することを拒否し、デスクトップのナビゲーターを使用している場合は、このコードsymfonyはiphone

/** 
* @Assert\Length(
*  min = 20, 
*  max = 2000, 
*  minMessage = "message.min_length", 
*  maxMessage = "message.max_length" 
*) 
*/ 
protected $message; 

でエンティティを設定しますが、ときiphoneのか、していますタブレット(アンドロイド)メッセージが送信され、空でもあります。フィールドはテキストエリアです。 アイデア

+0

これを追加してくださいしてくださいオブジェクトの検証に使用するコードを表示します。 – xabbuh

+0

コードはありません。私にとっては、検証IDは@AssertとSymfonyのメカニズムを介して行われました、いいえ? – Laurent

+0

さて、問題は、( '$ form-> isValid()'のような)バリデータを呼び出したことがあるのか​​、単にクライアント側の検証に頼っているのかということです。 – xabbuh

答えて

1

更新:

symfonyのドキュメントによれば、長さを主張し、したがって、なぜそれが(http://symfony.com/doc/current/reference/constraints/Length.html#min)を通過し、有効としてNULL &空の文字列を想定しています。

アサート\ NotBlankを(追加)、これは空の文字列

検証しますしてください - symfonyのフォームビルダーが何をするか

を例えば、フォーム要素にフォームの検証オプションを追加します:

<input name="my_field" required> 

デスクトップブラウザでは、このフォーム要素は、(クライアント側)&空の場合に必要とされていること、フォームが送信されることを防ぐ検証します。モバイルデバイスでは、フォームを自動的に検証しません(私はまだこの理由を見つけていますか?)。モバイル/タブレットで無効なフォームが送信されないように、javascriptフォームの検証を追加する必要がありますデバイス。

フォームが正しくエンティティクラスにマッピングされていることを確認してください:

// AppBundle/Form/EntityForm.php 

<?php 

namespace AppBundle\Form; 

class EntityForm extends AbstractType 
{ 
    // ... 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class' => 'AppBundle\Entity\MyEntity', 
     ]); 
    } 
} 

をsymfonyは注釈を検証確保するために、あなたのアプリケーション/設定/ config.ymlに

# app/config/config.yml 
framework: 
    validation: { enable_annotations: true } 
+0

あなたの答えはありがたいですが、 "Assert"はサーバー側から検証することになっていませんか?検証がうまくいかない場合は、ユーザーに戻りますか? – Laurent

+0

これで、上記のすべてが既に自分のコードに入っていることを確認しました – Laurent

+0

コードベースのコード例を提供して、これまでに何が行われているかを確認できますか? – LMS94