1

とにかく、電子メールフィールド、パスワード、数値フィールドなどのフォーム要素を自動的に検証するDrupalは、システムバリデーターをバインドすると言うことができますか?

$form['email] = array(
   '#title' => t('Email'),
   '#type' => 'textfield',
   '#validate_as' => array('email', ...),
   ...
);

4

4 に答える 4

6

Drupalで数値フィールドを検証するには、次のようにします。

'#element_validate' => array('element_validate_number')

カスタム検証関数を作成する必要はありません。 http://api.drupal.org/api/drupal/includes%21form.inc/function/element_validate_number/7

于 2012-06-11T21:15:32.573 に答える
5

リミアンは正しいことも間違っていることもあります。

Rimianが指摘しているように、を使用して任意の検証関数をフォームフィールドにアタッチできるのは良いことです#element_validate

ただし、値が次の場合など、最も一般的なものをテストするために呼び出すことができる一連のフォームAPI検証関数を認識していません。

  • int
  • 正の整数
  • 有効な日付(ただし、このような関数は日付モジュールに存在します)
  • メールアドレス(メールのvalid_email_address確認には使用できますが、検証エラーを発生させる関数が必要です)

したがって、これを行うことはできますが、これらの検証関数を自分で作成する必要があるため、期待していたよりも少し手間がかかります。ただし、これを実行すると、で再利用できます#element_validate

これらの検証関数を作成するにはいくつかの作業が必要になるため、の使用#element_validateは主に複雑な検証fx日付検証、場所検証などに集中しています。ほとんどの場合、その数などを検証する必要はありません(これは、ループを使用した通常の検証関数内で非常に簡単に実行できます)。ですから、これがあなたにとってどれほど役立つかはわかりませんが、それは間違いなく可能性です。

于 2010-10-23T09:35:50.253 に答える
1

Form API Validationモジュールは、要求されたとおりに実行します:http: //drupal.org/project/fapi_validation

クライアント側の検証には、http://drupal.org/project/clientside_validation(Form API Validationによって提供されるルールを使用できます)もあります。

于 2012-09-03T05:35:56.743 に答える
1

うん!

あまり実験していませんが。

http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html/6#element_validate

$form = array(  
  '#type' => 'fieldset',  
  '#title' => t('Input format'),  
  '#collapsible' => TRUE,  
  '#collapsed' => TRUE,  
  '#weight' => $weight,  
  '#element_validate' => array('filter_form_validate'),  
);  
于 2010-10-23T08:53:21.507 に答える