Выполнить код PHP через Ajax Call в модуле drupal - PullRequest
3 голосов
/ 29 июня 2011

Я пытался преобразовать этот в модуль Drupal, чтобы я мог мгновенно проверять код PHP на своем сайте для целей отладки. Я видел это дополнение к Firefox, которое позволяет вам запускать PHP на лету, но вход администратора необходим, пока я все сделал, имел одну форму и настраивал вызовы ajax, но если я передаю строку вроде:

preg_match($pat,$str,$matches);
print_r($matches);

Как выполнить это в бэкэнде?

EDIT

Чтобы загрузить форму:

$items['localphp'] = array(
  'page callback' => 'executePHP',
  'access callback' => TRUE,
  'type' => MENU_CALLBACK,
);

function executePHP(){
  $output = drupal_get_form('executePHP_form');
  return $output;
}

Функция обратного вызова Ajax:

$items['runPHP'] = array(
  'page callback' => 'getResult',
  'access callback' => TRUE,
  'type' => MENU_CALLBACK,
);
function getResult(){
  $code = $_POST['code'];
  //I need help here how to execute $code i.e the php code and return back result
  echo $code;
}

функция JS

function executePHP(baseurl){
  var code = $("#edit-code").val();
  $.ajax({
      type : "POST",
      url : baseurl+'runPHP',
      data : 'code='+code,
      async : true,
      cache : false,
      success : function (res) {
        $("#edit-result").html(res);
      },
      error : function (res) {
        alert("error");
      }
  });
  return false;
}

1 Ответ

1 голос
/ 29 июня 2011

FYI, Модуль Devel имеет функцию, которая позволяет администраторам запускать пользовательский код PHP со своей страницы. Модуль Devel имеет блок с множеством полезных функций для отладки.

Для пользовательского модуля, не видя никакого другого кода, я могу рассказать вам, что я сделал для достижения AJAX в модуле Drupal:

В JavaScript сделайте AJAX-запрос к URL на вашем сайте. Добавьте пункт меню с указанным путем внутри hook_menu() как 'type' => MENU_CALLBACK, который указывает на функцию в вашем модуле. Эта функция должна выполнить всю необходимую вам обработку, а затем вернуть результаты в JavaScript, чтобы сделать то, что вы хотите, с этим.

...