Creare una pagina di risposta a una form

7 contenuti / 0 new
Ultimo contenuto
Creare una pagina di risposta a una form

Vorrei creare una pagina di risposta ad una form. Es nella form inserisco Gabriele come nome e la pagina di risposta dopo il submit mi risponde Ciao Gabriele.
Lo so che è un esempio stupido ma volevo capire come fare.
Vi posto il codice di dove sono arrivato se qualcuno sa darmi qualche consiglio gli sarei molto grato.

<?php
/////Funzione per settare i permessi/////////////////////////////////
function prova_form_perm()
  {
    return array(
'access prova_form');
  }
 
////////////////////////////FUNZIONE PER CREARE LA FORM///////////////////////////////////////////
function prova_form_crea()
{  
// creazione del campo di testo
  
$form['subject'] = array
   (
  
'#type' => 'textfield',
  
'#title' => t('Subject'),
  
'#size' => 50,
  
'#maxlengh' => 255,
  
'#description' => t('soggetto.'),    );
  
//creazione del bottone submit
  
$form['submit'] = array(
  
'#type' => 'submit',
  
'#value' => t('Crea Dieta'),
   );
return
$form;
}
//funzione che chiama la drupal_get_form per creare veramente la form
function prova_form_prima(){
  
$sb = drupal_get_form('prova_form_crea');
   return
$sb;
}
//////////////Vorrei che questa funzione creasse una pagina contenente il dato salvato nella form creata sopra////////////
 
function prova_risposta_prima()
{
 
//Non so cosa metterci.
}
///Funzione per creare il menù
function  prova_form_menu()
 {
  
$items = array();
 
$items['prova_form'] = array(
   
'title' => 'provaform',
   
'page callback' => 'prova_form_prima',
   
'access arguments' => array('access prova_form'),
   
'type' => MENU_CALLBACK
 
);
 
////////////////////AGGIUNTO///////
   
$items['prova_risposta'] = array(
   
'title' => 'provarisposta',
   
'page callback' => 'prova_risposta_prima',
   
'access arguments' => array('access prova_form'),
   
'type' => MENU_CALLBACK
 
);
 
//////////////////////////////////////
 
return $items  ;
 }
 function
prova_form_crea_submit($form, &$form_state) {
    
drupal_redirect_form($form, $redirect = 'prova_risposta');
}
?>

Prova a impostare, nella funzione di submit del form (prova_form_crea_submit), il redirect nell'array form_state, invece che tramite drupal_redirect_form, in questo modo:

<?php
$form_state
['redirect'] = 'path/dove/vuoi/che/venga/ridirezionato'
?>

Scusami non mi sono spiegato bene. il redirect funziona è che non so come creare la pagina dinamica. Cioè non so come recuperare i dati sottomessi dalla form. Comunque grazie

kulky wrote:
Scusami non mi sono spiegato bene. il redirect funziona è che non so come creare la pagina dinamica. Cioè non so come recuperare i dati sottomessi dalla form. Comunque grazie

Ciao,
le varie submission dovresti poterle ricavare con (nel tuo caso):

<?php
 $form_state
['values']['subject']
?>

da chiamare ovviamente nella dunzione submit. In alternativa, dovresti poterle recuperare anche dall'array $_POST.
;)

Le possibili soluzioni sono due/tre secondo me (chi ha più dimistechezza con il codice pesante mi corregga :)):

- o salvi i valori che ti servono nell'array $_SESSION e te li riprendi nella funzione che ti crea la pagina dove fai il redirect

- oppure salvi i valori nel db in una tabella appositamente creata dal tuo modulo

- oppure, se vuoi che printi semplicemente un messaggio, puoi utilizzare sempre nella funzione di submit, drupal_set_message() per far printare a drupal un messaggio contenente i valori che ti interessano. Questo messaggio verrà poi visualizzato nella pagina in cui fai il redirect.

Innazittutto volevo ringraziarvi.
Uno dei metodi funziona mentre quello col post non capisco perchè non funziona.
Vi posto il codice funzionante(solo le due funzioni cambiate) :

<?php
 
function prova_form_crea_submit($form, &$form_state) {
    
$form_values = $form_state['values'];
    
$_SESSION['nome']=$form_values['subject'];
    
//$_POST['nome']=$form_values['subject'];
    
drupal_redirect_form($form, $redirect = 'prova_risposta');
 function
prova_risposta_prima()
{  return
'hello word  '. $_SESSION['nome']  .' fine';
  
//return 'hello word  '. $_POST['nome']  .' fine';
  //Non so cosa metterci.
}
?>

Grazie ancora anche se proverò a lavorare per far funzionare anche il metodo $_POST

Ho capito perchè non funzionava il metodo con post.
Bisogna aggiungere nella funzione di creazione della form

<?php
$form
['#action'] = url('prova_risposta/');
?>

e poi cambiare il codice della funzione

<?php
function prova_risposta_prima()
{  return
'hello word  '. $_POST['subject']  .' fine';
}
?>

Grazie ancora dell'aiuto