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

6 contenuti / 0 new
Ultimo contenuto
Drupal 5.x - Inserimento di un tasto cancel in un form

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

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

$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?

--
Il saggio non è colui che sa tutto, ma colui che sa dove trovare le risposte

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

--
Il saggio non è colui che sa tutto, ma colui che sa dove trovare le risposte

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
Marco
--
My blog
Working at @agavee

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