modifica di un campo nel modulo user

Posts: 144
Iscritto il: 14 Dic 07

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_formg_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

__________________

Posts: 351
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 144
Iscritto il: 14 Dic 07

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ù --> ;(

__________________

Posts: 351
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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

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

Ciao
Gianni


Posts: 144
Iscritto il: 14 Dic 07

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

__________________

Posts: 351
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

Non mi sembra, io me lo faccio a mano.
http://api.drupal.org/api/file/developer/topics/forms_api_reference.html...

Ciao


Posts: 144
Iscritto il: 14 Dic 07

ah ok, scusa Smiling

__________________

Condividi contenuti