Wie kann ich $ _POST-Daten in einem Rückruf abrufen?


7

Ich habe hook_menu ungefähr wie folgt implementiert:

function sample_menu() {
    return array(
        'path/to/things' => array(
            'page callback' => 'callback_function',
            'access arguments' => array('access content'),
            'page arguments' => array(),
            'type' => MENU_CALLBACK
        )
    );
}

Ich möchte in der Lage sein, Daten an diese URL zu senden. Also sagt $ _POST ist das folgende Array:

array(
    'data1' => 'value1',
    'data2' => 'value2',
)

Wie kann ich innerhalb des Rückrufs auf $ _POST ['data1'] und $ _POST ['data2'] zugreifen? Der direkte Zugriff auf $ _POST scheint nicht zu funktionieren (var_dumped ist leer).

Antworten:


14

Sie greifen $_POSTauf die gleiche Weise zu wie andere Funktionen.

Nehmen Sie als Beispiel file_ajax_upload () ; Es enthält den folgenden Code.

  if (empty($_POST['form_build_id']) || $form_build_id != $_POST['form_build_id']) {
    // Invalid request.
    drupal_set_message(t('An unrecoverable error occurred. The uploaded file likely exceeded the maximum file size (@size) that this server supports.', array('@size' => format_size(file_upload_max_size()))), 'error');
    $commands = array();
    $commands[] = ajax_command_replace(NULL, theme('status_messages'));
    return array('#type' => 'ajax', '#commands' => $commands);
  }

Die Funktion ist ein in file_menu () definierter Seitenrückruf .

  $items['file/ajax'] = array(
    'page callback' => 'file_ajax_upload', 
    'delivery callback' => 'ajax_deliver', 
    'access arguments' => array('access content'), 
    'theme callback' => 'ajax_base_page_theme', 
    'type' => MENU_CALLBACK,
  );

sieht so aus ist richtig. Ich glaube, mein Fehler hatte damit zu tun, wie ich die Daten gepostet habe ... Ich habe es sowieso nicht richtig gemacht.
Gregghz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.