#php #arrays #drupal #variables
#php #массивы #drupal #переменные
Вопрос:
Я использую drupal для создания некоторой пользовательской формы, которая отправляется третьей стороне, и я пытаюсь объединить результаты моей формы — к некоторым из которых применяются некоторые функции преобразования — для отправки получателю формы.
Я использовал функцию drupal_http_request от Drupal в простых формах, и она работала хорошо, но теперь, когда некоторые из моих результатов дают значение vars, я не уверен, как создать массив с ключами, который продолжает передавать значение var.
Я знаю, что когда я отправляю свою форму напрямую третьей стороне, они получают правильный результат, однако я пытаюсь отправить им результаты, но перенаправляю на страницу на моем собственном сайте, поэтому я знаю, что моя форма работает, по крайней мере, — и это просто функция использования trying encode, чтобыу меня есть контроль над перенаправлением, которого нет. но я даже не знаю, может ли массив с ключами иметь переменные в виде значений или нет, или это вопрос синтаксиса
Это мой код:
function formshare_nameform_submit($form_id, amp;$form_state) {
// Lookup share matrix return value
$shareMatrixValue = setShareMatrixValue($form_state['values']['image_id']);
$langResultsCode = setLangForShare($langCode);
$gender = setGenderForShare($form_state['values']['gender']);
$first_name = $form_state['values']['first_name'];
$last_name = $form_state['values']['last_name'];
$email = $form_state['values']['email'];
$email_friend1 = $form_state['values']['email_friend1'];
$email_friend2 = $form_state['values']['email_friend2'];
$email_friend3 = $form_state['values']['email_friend3'];
$message = $form_state['values']['massage'];
$optin = $form_state['values']['optin'];
$category = $form_state['values']['category'];
$image_id = $shareMatrixValue;
$id_langue = $form_state['values']['id_langue'];
// Make an array of values to pass to 3rd party.
$pass_these = array();
$pass_these['shareMatrixValue'] = $shareMatrixValue;
$pass_these['langResultsCode'] = $langResultsCode;
$pass_these['gender'] = $gender;
$pass_these['first_name'] = $first_name;
$pass_these['last_name'] = $last_name;
$pass_these['email'] = $email;
$pass_these['email_friend1'] = $email_friend1;
$pass_these['email_friend2'] = $email_friend2;
$pass_these['email_friend3'] = $email_friend3;
$pass_these['message'] = $message;
$pass_these['optin'] = $optin;
$pass_these['category'] = $category;
$pass_these['image_id'] = $image_id;
$pass_these['id_langue'] = $id_langue;
// Post the data to 3rd party.
$url = 'http://mythirdpartysite.com';
$headers = array('Content-Type' => 'application/x-www-form-urlencoded');
$data = drupal_query_string_encode($pass_these);
drupal_http_request($url, $headers, 'POST', $data);
}
Ответ №1:
вы можете либо сохранить переменную по ссылке с помощью amp;$var, либо просто сохранить имя переменной в массиве и использовать $$array[‘key’]; чтобы получить значение $var
лучше всего создать объект stdClass и сохранить переменные как атрибуты, он работает как ассоциативный массив, но он чище
Комментарии:
1. Я уже пытался использовать ref var, подобный этому: $pass_these[‘gender’] = amp;$gender; но это не сработало. Я знаю, потому что я должен получить ответ по электронной почте. я плохо разбираюсь в PHP, можете ли вы привести мне пример того, как я бы настроил объект stdClass?
2.
$object = new stdClass(); $object->gender = amp;$gender;
но вы могли бы использовать$pass_these['gender'] = $gender;
then с другой стороны, просто получить значение в любом случае, не уверен, зачем вам нужна ссылка на переменную.