it-swarm-eu.dev

Api formulář pro potvrzení e-mailu

Jaký je nejlepší způsob zpracování ověřování e-mailů na straně serveru ve formuláři API?
Může být implementováno někde uvnitř níže popsaného formuláře, nebo existují jiné možnosti?

 $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

Vytvořte ověřovací funkci pro svůj formulář. Zde je příklad použití vašeho formuláře. Řekněme například, že kód formuláře je ve funkci nazvané 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
}
?>

Tato funkce vám umožní napsat vlastní kód a určit, zda jsou hodnoty zadané ve vašich polích platné nebo ne. Můžete také přidat vlastní funkci odeslání do formuláře k provádění vlastního kódu během odesílání formuláře.

Přečtěte si více o ověřování formulářů na Ověření formulářů , odeslání formulářů na Odesílání formulářů , nebo si přečtěte celý článek pro lepší porozumění API Forms: Průvodce rychlým startem Form API)

5
Laxman13

Namísto přidání obslužné rutiny ověření formuláře do formuláře můžete do elementu formuláře, který je třeba ověřit, přidat obslužnou rutinu validace: Použijte # element_validate , který přijímá matici validačních rutin, které budou použity na prvek formuláře.

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

Obslužný program validace obdrží tři argumenty: Ověřovaný prvek formuláře, $form_state a $form pole pro formulář obsahující prvek formuláře. Obslužný program validace by měl zavolat form_error () nebo form_set_error () a nahlásit jakoukoli chybu ověření.

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

Vysvětleno zde: 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

Nainstalujte modul pole E-mail a propojte jej s patch v komentáři 16. Poté pomocí kódu v popisu popisu problému definujte pole e-mailu s integrovanou validací:

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

Stačí použít modul Elements a ve vlastnostech #type elementu element stačí použít 'emailfield':

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

Stejně tak snadné s prvky modulu, aby vlastní ověření pro jednoduché pole e-mailu nemá smysl, nemusíte znovu objevovat kolo ...

0
SsouLlesS