Validazione campo email in in modulo fatto da me

7 contenuti / 0 new
Ultimo contenuto
Validazione campo email in in modulo fatto da me

incominciando a smanettare con drupal ho scritto questo modulo

COME MAI NON MI EFFETTUA NESSUN CONTROLLO SULLA CORRETTEZA DELLA MAIL????????

<?php
</em>
function
prova_modulo_menu() {
 
$items = array();
 
$items['prova_modulo/form'] = array(
   
'title' => t('Il mio form'),
   
'page callback' => 'prova_modulo_form',
   
'access arguments' => array('access content'),
   
//'description' => t('Il mio form'),
    //'type' => MENU_CALLBACK,
 
);
  return
$items;
}
function
prova_modulo_form() {
   return
drupal_get_form('prova_modulo_my_form');
}
function
prova_modulo_my_form($form, &$form_submit) {
//date di pubblicazione
//contatti
 
$form['gruppo1'] = array(
    
'#type' => 'fieldset',
    
'#title' => t('Contatti'),
    
'#collapsible' => TRUE, // Added
    
'#collapsed' => FALSE// Added
     //'#description' => "",
  
);
 
$form['gruppo1']['Titolo'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '100',
    
'#title' => t('Titolo'),
    
'#required' => TRUE,
   );
  
$form['gruppo1']['EmailContatto'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '255',
    
'#title' => t('Email'),
    
'#required' => TRUE,
   );
 
$form['gruppo1']['TelContatto'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '100',
    
'#title' => t('Telefono 1'),
   );
 
$form['gruppo4']['Indirizzo'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '255',
    
'#title' => t('Indirizzo'),
   );
 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => t('Invia'),
  );
   return
$form;
}
/**
 * Validazione indirizzo mail
 */
function prova_modulo_email_validate($form, &$form_state) {
    if (!
valid_email_address($form_state['values']['EmailContatto'])) {
       
form_set_error('EmailContatto', t('That e-mail address is not valid.'));
  }
}
/**
 /* Form submission logic for the contact form.
function email_example_form_submit($form, &$form_state) {
  email_example_mail_send($form_state['values']);
}
**/
?>

grazie!!!
marco

Ciao,
probabilemente perchè nell'hook form non richiami il validate!

<?php
function rilevazioni_main() {
$form['#validate'][] = 'rilevazioni_main_validate';
$form['#submit'][] = 'rilevazioni_main_submit';
         
$form['info'] = array(
           
'#type' => 'item',
           
'#title' => t('Selezionare i dati e procedere'),
           
'#attributes' => array('class' => 'etichetta-info'),
          );
//......................
return $form;
}
?>

<?php
function rilevazioni_main_validate($form, &$form_state) {
//va bene la tua
}
?>

<?php
function rilevazioni_main_submit($form, &$form_state) {
 
//impostazioni qui
 
$form_state['redirect'] ='rilevazioni/gourl/';
}
?>

Spero di non sbagliarmi, io in D6 i form li faccio così. E funzionano!

io uso D7...... cambia qualcosa nei termini di validazione?

ti ringrazio per la risposta, però non ho capito cosa e dove devo modificare del mio codice

Io chiamerei la drupal_get_form direttamente dal menu item e poi per la validazione basta che dichiari la funzione seguendo il pattern giusto ossia tuomodulo_tuafunzioneform_validate($form, &$form_state).
Non credo ci siano differenze tra D6 e 7.

<?php
function prova_modulo_menu() {
 
$items = array();
 
$items['prova_modulo/form'] = array(
   
'title' => t('Il mio form'),
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('prova_modulo_form'),
   
'access arguments' => array('access content'),
   
//'description' => t('Il mio form'),
    //'type' => MENU_CALLBACK,
 
);
  return
$items;
}
function
prova_modulo_my_form($form, &$form_submit) {
//date di pubblicazione
//contatti
 
$form['gruppo1'] = array(
    
'#type' => 'fieldset',
    
'#title' => t('Contatti'),
    
'#collapsible' => TRUE, // Added
    
'#collapsed' => FALSE// Added
     //'#description' => "",
  
);
 
$form['gruppo1']['Titolo'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '100',
    
'#title' => t('Titolo'),
    
'#required' => TRUE,
   );
  
$form['gruppo1']['EmailContatto'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '255',
    
'#title' => t('Email'),
    
'#required' => TRUE,
   );
 
$form['gruppo1']['TelContatto'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '100',
    
'#title' => t('Telefono 1'),
   );
 
$form['gruppo4']['Indirizzo'] = array(
    
'#type' => 'textfield',
    
'#size' => '120',
    
'#maxlength' => '255',
    
'#title' => t('Indirizzo'),
   );
 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => t('Invia'),
  );
   return
$form;
}
/**
 * Validazione indirizzo mail
 */
function prova_modulo_my_form_validate($form, &$form_state) {
    if (!
valid_email_address($form_state['values']['EmailContatto'])) {
       
form_set_error('EmailContatto', t('That e-mail address is not valid.'));
  }
}
/**
 * Form submission logic for the contact form.
 */
function prova_modulo_my_form_submit($form, &$form_state) {
 
email_example_mail_send($form_state['values']);
}
?>

il codice proposta da DarthDrupal non va...

ho comunque risolto inserendo nella funzione di output delle webform l'isrtizione

$form['#validate'][] = 'prova_modulo_email_validate';

ringrazio!!!!

Non funziona perchè dopo aver fatto una modifica a un menu item devi ricostruire i menu, visitando la pagina dove vengono elencati i moduli ad esempio.
Cmq la cosa importante è che hai risolto.