drupal HTTP POST data


7

Come invio i dati HTTP POST / GET a drupal?

per esempio: ho un modulo html:

<form action="mydrupalcite.com" method="get">
    <input type="text" name="title" />
</form>

come posso ottenere titlei dati nel modulo di risposte di drupal? (o in qualsiasi modulo?)

Sto cercando il modo drupal di farlo (sono relativamente nuovo per Drupal e come funziona davvero)

Ha qualcosa a che fare con il modulo Servizi?


non sto davvero cercando la creazione di moduli, ma l'invio di dati a un modulo in drupal (un modulo del modulo di domanda)
tom91136

Ok, ho pensato diversamente, dai un'occhiata alla risposta di Clives.
GoodSp33d

Risposte:


6

L'API del modulo di Drupal ha la protezione CSRF integrata, quindi l'invio di un modulo da un dominio esterno non funzionerà. Potresti provare a disabilitare il CSRF (pessima idea) o, come suggerisci, usare il modulo Servizi.

Non esiste un mapping uno a uno tra il modulo dei servizi e i moduli sul sito, ma i moduli implementano risorse per determinate attività che devono essere consumate da un client esterno. Ottieni nodo, utente, termine di tassonomia e probabilmente altri per impostazione predefinita. Quindi puoi (ad esempio) aggiungere un nuovo nodo / utente / termine, ma lo fai inviando richieste xml / json / etc al server dopo aver effettuato l'autenticazione, non inviando un modulo come tale.

Ottenere i dati funziona più o meno allo stesso modo. Puoi usare i Servizi per farlo, o se riesci a gestire / non hai bisogno della tua autenticazione, vedi la risposta di Indrock per un buon metodo.

I servizi sono molto estensibili, quindi anche se il modulo risposte non implementa risorse, è un lavoro abbastanza semplice aggiungere il proprio che avvolge le funzioni API dal modulo risposte (o qualsiasi altro).

La documentazione per i servizi sarebbe probabilmente un buon punto di partenza.


6

Devi prima creare una pagina (URL) in Drupal per ottenere questi parametri. Puoi farlo implementando hook_menu(), nel tuo modulo personalizzato. Fare riferimento a questo per creare il modulo personalizzato .

function MYMODULE_menu() {
  $items['get_details'] = array (
    'title' => '',
    'page callback' => 'MYMODULE_access_variables',
    'page arguments' => array(1),
    'access callback' => TRUE,  // this will be accessible to everyone
  );
  return $items;
}

function MYMODULE_access_variables() {
 // Here you get access to the POSTED variables using $_RESPONSE php superglobal
  echo "<pre>";
  print_r ($_RESPONSE['title']);  // will get you the value of the HTML input type having name='title'
  echo "</pre>"
}

Questo creerà una pagina sul tuo sito all'indirizzo url http://mydrupalsite.com/get_details

Ora, dal tuo HTML, fai la chiamata come

<form action="mydrupalcite.com/get_details" method="post">
    <input type="text" name="title" /> <!-- Note that the value of the attribute 'name' will be used the capture the value which is posted -->
</form>

NOTA: secondo la risposta di @ clive, suggerirei di usarlo solo a scopo di sviluppo / didattico. Ciò potrebbe avere implicazioni per la sicurezza.


1
print_r STAMPA i parametri indicati sul tuo sito. Se vuoi che Drupal aggiunga il resto della pagina (barre laterali, css, ecc.), Usa qualcosa del genere: pastebin.com/TC1FfPY7
AyeshK

@AyeshK Bel suggerimento! Ho appena stampato il valore solo per mostrare che è possibile accedere ai valori all'interno della funzione :)
AjitS
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.