modifica di un campo nel modulo user

7 contenuti / 0 new
Ultimo contenuto
modifica di un campo nel modulo user

Vengo subito al problema, devo modificare la pagina di registrazione, o meglio la data di nascita di un utente (user/register); al posto del textfield, come vi è in data, vorrei 3 menù a tendina: giorno, mese, anno! abbastanza chiaro no?
uso "hook_form_alter", ma nn sò come applicarla, creo un modulino e scrivo:

<?php
function age_form_alter($form_id, &$form) {
  if(
$form_id == "user-register" )  {
 
$form['age_checkbox'] = array(
   
'#type' => 'checkbox',
   
'#title' => t('Newly Added CheckBox'),
    );
  }
}
 
?>

questo è giusto un esempio, per arrivare alla pagina!! ma nn succede nulla!
1) sarà problemi di permessi?
2) chi richiama questa function?
3) dovrò creare dei permessi per anonimi per poter utilizare questa function?
4) altri suggerimenti!

grazie 1000

1) versione di drupal
2) cosa significa "creo un modulino"? posta il codice di TUTTO il modulino e non solo una funzione. Quella funzione, estrapolata dal contesto "modulo", non serve a nulla.

P.S.
Le funzioni di hook, vengono richiamate automaticamente da Drupal.... fermo restando il fatto che il modulo dev'essere attivo e ben fatto

Ciao
Gianni

ciao Gianni, il mio modulino era solo quello che ho scritto, solo quelle poche righe, cmq ho risolto cosi (ti scrivo tutto il modulo):

<?php
function iwage_form_alter($form_id, &$form) {
    if (
$form_id == "user_register" ) {
       
$tmp = $form['Informazioni Personali'];
       
$form['Informazioni Personali'] = array();
        while(list(
$key, $value) = each($tmp))
        {
            if (
$key == 'profile_data')
            {
               
_add_form_fields($form);
                continue;
            }
           
$form['Informazioni Personali'][$key] = $value;
        }
       
//echo "<pre>";
        //print_r($form);
   
}
}
function
_add_form_fields(&$form)
{
   
$form['Informazioni Personali']['profile_data_giorno'] = array(
       
'#prefix' => '<b>Data di nascita:</b> <table><tr><td width="7%">',
       
'#suffix' => '</td>',
       
'#type' => 'select',
       
'#options' => array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31),
    );
   
$form['Informazioni Personali']['profile_data_mese'] = array(
       
'#prefix' => '<td width="10%">',
       
'#suffix' => '</td>',
       
'#type' => 'select',
       
'#options' => array('gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre'),
    );
   
$year = array();
    for (
$i=1920;$i < date("Y") - 18; $i++)
       
$year[] = $i;
   
$form['Informazioni Personali']['profile_data_anno'] = array(
       
'#prefix' => '<td>',
       
'#suffix' => '</td></tr></table>',
       
'#type' => 'select',
       
'#options' => $year,
    );
}
 
?>

ora non riesco a fare l'allineamento preciso cioè data di nascita e subito sotto, attaccato, i menù --> ;(

Invece di usare 3 select separate, usa un solo form di tipo date:

$form['Informazioni Personali']['profile_data'] = array(
'#type' => 'date',
);

Ciao
Gianni

sei un grande gianni!! sono proprio stupido!! ;( cma se nn sbaglio fa anche il controllo sulla data?
grazie ancora

ah ok, scusa :-)