是否可以从自定义js发布到.module / custom.php / controller文件,并在drupal8中开发自定义模块时获取自定义js中的响应?

时间:2018-03-20 08:24:33

标签: ajax drupal

我在drupal modules / mymodule / js / folder中的custom.js文件中有这个

  (function ($) {
  Drupal.behaviors.coorrency = {
    attach: function (context, settings) {

      jQuery.ajax({
            url: 'modules/mymodule/custom.php',
            type: "POST",
            success:  function(data){
                        console.log(data);
                    }
          });
    }
  }
})(jQuery);

我必须发布到modules / mymodule / custom.php

<?php

echo "test";

?>

并从custom.php返回数据

1 个答案:

答案 0 :(得分:3)

你可以通过创建一个用于监听ajax调用的控制器

来做到这一点

<强> my_module.routing.yml

my_module.call_back:
      path: '/my_module/call_back'
      defaults:
        _controller: '\Drupal\my_module\Controller\DefaultController::callBack'
        _title: 'Call Back'

<强>控制器

<?php

namespace Drupal\my_module\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * Class DefaultController.
 */
class DefaultController extends ControllerBase {

  /**
   * Your Callback
   *
   */
  public function callBack() {
    return ["This is a test" ];
  }

<强> custom.js

(function ($) {
  Drupal.behaviors.coorrency = {
    attach: function (context, settings) {
      jQuery.ajax({
        url: '/my_module/call_back',
        type: "POST",
        success:  function(data){
          console.log(data);
        }
      });
    }
  }
})(jQuery);