コールバックで$ _POSTデータを取得するにはどうすればよいですか?


7

大まかに次のようにhook_menuを実装しました。

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

このURLにデータを投稿できるようにしたい。つまり、$ _ POSTは次の配列です。

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

コールバック内で$ _POST ['data1']および$ _POST ['data2']にアクセスするにはどうすればよいですか?$ _POSTへの直接アクセスは機能しないようです(var_dumpedが空である)。

回答:


14

$_POST他の関数と同じ方法でアクセスします。

テイクfile_ajax_upload()の例としては、次のコードが含まれています。

  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);
  }

この関数は、file_menu()で定義されたページコールバックです。

  $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,
  );

これは正しいように見えます。私のエラーは、データの投稿方法に関係していると思います...とにかく正しく実行していませんでした。
gregghz 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.