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).

gregghz
quelle

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,
  );
kiamlaluno
quelle
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