Drupal 8 - 从控制器获取当前节点ID

时间:2017-02-24 19:00:38

标签: php drupal controller drupal-8

我正在使用reactjs构建一个Drupal 8模块,我需要从控制器获取当前节点ID,这样我就可以根据节点ID执行某些任务,但是我总是收到一个空值,我的路由工作正常,我的功能如下:

  public function currentNodeId()
    {
        // get current node
        $node_id = \Drupal::routeMatch()->getParameter('node')->Id();

        return new JsonResponse(
            array(
                'node_id' => $node_id
            )
        );
    }

在mymodule.routing.yml中我有:

 mymodule-currentNode:
   path: '/mymodule/currentNodeId'
   defaults:
     _controller: '\Drupal\mymodule\Controller\MyModuleController::currentNodeId'
     _title: 'Current node id'
   requirements:
     _permission: 'access content'

我可以从我的模块文件'mymodule.module'获取当前节点id,就像我在currentNodeId函数中所做的那样:

   $node_id = \Drupal::routeMatch()->getParameter('node')->Id();

任何人都知道这是某种安全还是我做错了什么?谢谢

1 个答案:

答案 0 :(得分:0)

我通过在每次加载模块时将当前节点id存储在变量中来解决这个问题。您必须禁用模块高速缓存,以便每次都可以加载.module文件。

此处有更多信息:https://drupal.stackexchange.com/questions/229780/get-current-node-id-from-controller/229787#229787