Datos de POST HTTP de Drupal

7

¿Cómo envío datos HTTP POST / GET a drupal?

por ejemplo: tengo un formulario html:

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

¿Cómo obtengo los titledatos de 's en el módulo de respuestas de Drupal? (¿O cualquier módulo?)

Estoy buscando la forma drupal de hacer esto (soy relativamente nuevo en Drupal y cómo funciona realmente)

¿Tiene algo que ver con el módulo de Servicios?

tom91136
fuente
No estoy realmente en busca de la creación de formas, pero el envío de datos a un formulario en Drupal (una forma módulo de interrogación)
tom91136
Ok, pensé lo contrario, mira la respuesta de Clives.
GoodSp33d

Respuestas:

6

El formulario API de Drupal tiene protección CSRF incorporada, por lo que enviar un formulario desde un dominio externo no funcionará. Puede deshabilitar el CSRF (muy mala idea) o, como sugiere, usar el módulo Servicios.

No hay un mapeo uno a uno entre el módulo de servicios y los formularios en el sitio, sino que los módulos implementan recursos para ciertas tareas que se consumirán desde un cliente externo. Obtiene nodo, usuario, término de taxonomía y probablemente otros por defecto. Por lo tanto, puede (por ejemplo) agregar un nuevo nodo / usuario / término, pero lo hace enviando solicitudes xml / json / etc. al servidor después de haberse autenticado, no enviando un formulario como tal.

Obtener datos funciona de la misma manera. Puede usar los Servicios para hacer eso, o si puede administrar / no necesita su propia autenticación, vea la respuesta de indrock para un buen método.

Los servicios son muy extensibles, por lo que incluso si el módulo de respuestas no implementa recursos, es un trabajo bastante fácil agregar el suyo propio que envuelve las funciones de API del módulo de respuestas (o cualquier otro).

La documentación de los servicios probablemente sería un buen lugar para comenzar.

Clive
fuente
6

Primero deberá crear una página (URL) en Drupal para obtener estos parámetros. Puede hacerlo implementando hook_menu(), en su módulo personalizado. Consulte esto para crear su módulo personalizado .

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>"
}

Esto creará una página en su sitio en url http://mydrupalsite.com/get_details

Ahora, desde tu HTML haz el llamado como

<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: Según la respuesta de @ clive, te sugiero que lo uses solo para fines educativos / de desarrollo. Esto podría tener implicaciones de seguridad.

AjitS
fuente
1
print_r IMPRIMIRÁ los parámetros dados a su sitio. Si desea que Drupal agregue el resto de la página (barras laterales, CSS, etc.), use algo como esto: pastebin.com/TC1FfPY7
AyeshK
@AyeshK ¡Buena sugerencia! Acabo de imprimir el valor solo para mostrar que se puede acceder a los valores dentro de la función :)
AjitS