web-gelistirme-sc.com

E-posta doğrulama formu api

Form API'sında sunucu tarafı e-posta doğrulamasını işlemenin en iyi yolu nedir?
Aşağıda açıklanan formun bir bölümünde uygulanabilir veya başka seçenekler var mı?

 $form['address']['mail'] = array(
   '#type' => 'textfield',
   '#title' => t('E-mail'),
   '#required' => TRUE,
   '#default_value' => $subscription->mail,
   '#maxlength' => 255,
 ); 

 $form['submit'] = array(
   '#type' => 'submit',
   '#value' => t('Versturen'),
 );

 return $form;
}
9
JurgenR

Formunuz için bir doğrulama işlevi oluşturun. Formunuzu kullanan bir örnek. Örneğin, form kodunuzun my_email:

<?php
function my_email() {
  $form = array();

  $form['address']['mail'] = array(
   '#type' => 'textfield',
   '#title' => t('E-mail'),
   '#required' => TRUE,
   '#default_value' => $subscription->mail,
   '#maxlength' => 255,
  ); 

  $form['submit'] = array(
   '#type' => 'submit',
   '#value' => t('Versturen'),
  );

  return $form;
}

function my_email_validate($form, &$form_state) {
  // YOUR CUSTOM VALIDATION CODE GOES HERE
 if (!valid_email_address($mail)) {
   form_set_error('submitted][email_address', t('The email address appears to be invalid.'));
   }
}

function my_email_submit($form, &$form_state) {
  // YOUR CUSTOM SUBMIT CODE GOES HERE
}
?>

Bu işlev, alanlarınıza girilen değerlerin geçerli olup olmadığını belirlemek için özel kod yazmanıza olanak tanır. Ayrıca form gönderilirken formunuzun özel kod yürütmesi için özel bir gönderme işlevi de ekleyebilirsiniz.

Formları doğrulama hakkında Formları Doğrulama adresinde, formları Formları Gönderme adresinde gönderme hakkında daha fazla bilgi edinin veya Formlar API'sını daha iyi anlamak için makalenin tamamını okuyun: Form API Hızlı Başlangıç ​​Kılavuz

5
Laxman13

Forma bir form doğrulama işleyicisi eklemek yerine, doğrulanması gereken form öğesine bir doğrulama işleyicisi ekleyebilirsiniz: # element_validate işlevini kullanın; form öğesi.

$form['email'] = array(
  '#type' => 'textfield',
  '#title' => 'Email',
  '#required' => TRUE,
  '#element_validate' => array('myelement_email_validate')
);

Doğrulama işleyicisi üç bağımsız değişken alır: Doğrulanan form öğesi, $form_state ve $form form öğesini içeren form için dizi. Doğrulama işleyicisi herhangi bir doğrulama hatasını bildirmek için form_error () veya form_set_error () öğesini çağırmalıdır.

function myelement_email_validate($element, &$form_state, $form) {
  $value = $element['#value'];
  if (!valid_email_address($value)) {
    form_error($element, t('Please enter a valid email address.'));
  }
}
5
nmeegama

Burada açıklanmıştır: http://drupal.org/node/279127

<?php
$mail = $form_values['submitted_tree']['email_address'];
if (!valid_email_address($mail)) {
  form_set_error('submitted][email_address', t('The email address appears to be invalid.'));
}
?>
3
artfulrobot

E-posta Alanı modülünü yükleyin ve yorum 16'da yama ile yamalayın. Ardından, dahili doğrulama ile e-posta alanınızı tanımlamak için bağlantılı sorun açıklamasındaki kodu kullanın:

$form['email'] = array(
    '#type' => 'email',
    '#title' => t('Email'),
    '#required' => TRUE,
    '#default_value' => "",
    '#description' => "Please enter your email.",
    '#size' => 20,
    '#maxlength' => 20,
  );
0
Roger

Sadece Elements modülünü kullanabilir ve form öğesinin #type özelliğinde 'e-posta alanını' kullanabilirsiniz, tıpkı şöyle:

 $form['YOUR_FIELD_KEY'] = array(
    '#type' => 'emailfield',
    '#title' => t('Email'),
    '#size' => 20,
    '#maxlength' => 20,
    '#description' => t('Enter a valid email'),
    '#required' => TRUE,
  );

Elements modülü ile bu kadar kolay, basit bir e-posta alanı için özel doğrulama yapın mantıklı değil, tekerleği yeniden icat etmek zorunda değilsiniz ...

0
svelandiag