Drupal 5.x - Inserimento di un tasto cancel in un form

Posts: 8
Iscritto il: 20 Maggio 08

Salve a tutti,
ho il seguente problema: ho creato un form con le form api e vorrei aggiungere oltre al tasto submit, anche un tasto Cancel che mi faccia ritornare alla pagina precedente (o cmq ad una pagina da me specificata).
Qualcuno sa darmi dei consigli a riguardo

Thx


Posts: 184
Iscritto il: 04 Apr 08

Non conosco le form api, ma non puoi chiamare un bottone "cancel" e poi inserirgli un link?


Posts: 8
Iscritto il: 20 Maggio 08

$form['#multistep'] = TRUE;
$form['#prefix'] = '<div class="myclass">';
$form['#method'] = 'POST';
$form['ID'] = array(
'#type' => 'hidden',
'#value' => $ID
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Invia')
);
$form['cancel'] = array(
'#type' => 'button',
'#value' => t('Cancella'),
'#executes_submit_callback' => FALSE
);
$form['#suffix'] = '</div>';
return $form;

Questo è il codice che devo inserire.
Mettendo l'opzione '#executes_submit_callback' => FALSE il tasto Cancel non effettua l'invio del form, ma ricarica la solita pagina (presumibilmente per azzerare i campi e ricominciare da 0 l'inserimento dei dati).
Sul libro che ho (pro drupal Development) viene specificato un tag #attributes, però non viene detto a cosa serve e quali parametri ha come input..
L'unica idea che mi viene in mente è di crearmi un bottone ad-hoc, ma possibile che non sia stata pensata una situazione del genere?


Posts: 8
Iscritto il: 20 Maggio 08

In attesa di una soluzione migliore della mia, ho trovato una soluzione (bruttissima dal mio punto di vista..) che mi permette di risolvere questo problema:

$form['cancel'] = array(
'#type' => 'markup',
'#value' => '<INPUT type="button" value="Cancel" onClick="location.href=\'index.htm\'">',
);

Il tipo markup mi permette di inserire qualsiasi cosa all'interno del form (test, html...),quindi ho utilizzato questa funzionalità per "costruirmi" il pulsante in html invece di usare le form API.
In questo modo al click del pulsante, viene attivata la funzione onclick di Javascript che mi rimanda alla pagina desiderata (in questo caso {sito}\index.html


Posts: 2049
Iscritto il: 01 Gen 07
Admin di Drupal ItaliaSviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneTraduttore

se proprio vuoi fare una cosa del genere genera almeno codice XHTML, quindi:

<?php
$form
['cancel'] = array(
   
'#type' => 'markup',
   
'#value' => '<input type="button" value="Cancel" onclick="location.href=\'index.htm\'" />',
);
?>

Detto questo credo che vi siano soluzioni migliori, ma dipende da come è stato strutturato il tutto.. e come si sta realizzando il modulo.

__________________

Ciao
    Mavimo
_________________
Io mio sito su Drupal, CFD e OpenFOAM (e se vi chiedete cosa c'entrano l'uno con l'altro.. bhè, non so nemmeno io la risposta Sticking out tongue )


Posts: 477
Iscritto il: 21 Maggio 05
Admin di Drupal ItaliaSviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneRedattore di Drupal Italia. Contribuisco a manualiTraduttore

Io per il cancel gestisco la funzione '#after_build'.
Nella funzione di after_build comunico a drupal che se OP=='cancel' allora drupal_goto('bla')

Nel libro trovi alcuni esempi!!

Ciao Uccio

__________________

Condividi contenuti