将$ request数组嵌入/注入Drupal 7函数

时间:2016-09-20 19:17:12

标签: php drupal drupal-7 drupal-modules

我的自定义模块中有一个$ request数组,它引用/调用my / libraries目录中的API库。目前在我的模块中,这个$ request位于我的模块hook_node_view函数之外。它以这种方式工作。但是我想将$ request数组注入/嵌入到hook_node_view函数中,以便从Drupal函数中进行处理。当我这样做但它停止工作并且没有正确调用库。

关于如何最好地构建Drupal函数以便它可以处理这个数组的想法?

以下是$ request的示例:

<?php
$request = array(
    'template_id' => 'Template ID',
    'activity_id' => 'Activity ID',
    'name' => 'Demo Activity',
    'session_id' => generate(),
    'user_id' => 'User ID',
    'assess_inline' => true,
  );
?>

function assignment_node_view($node, $view_mode)
{

 if ($node->nid == 3356) {
    if ($view_mode == 'full') {
        $node->content['my_extra_content'] = array(
            "#markup" => '<div id="assess"></div>',
            "#weight" => 100,
        );

    }
  }
  if ($node->nid == 3354) {
    if ($view_mode == 'full') {
        $node->content['my_extra_content'] = array(
            "#markup" => '<div id="assess"></div>',
            "#weight" => 100,

        );
    }
  }
}

2 个答案:

答案 0 :(得分:0)

嗯......似乎Drupal拥有它自己的$request全局数组,当你重新定义它时,你实际上正在用你的数据改变Drupal的数组。

但是当您从函数中执行此操作时,您只创建一个本地$request数组,仅在该函数中可用,并且全局Drupal的数组保持不变。

尝试添加:

global $request;
在开始使用该数组之前,在您的函数中

但是,我不认为这是实现你想要的每一个目标的正确途径。

答案 1 :(得分:0)

你应该避免全球化。而是创建一个像mymodule_get_request()这样的函数,而不是返回请求。然后,您可以在钩子中调用此函数。

如果计算量很大,您甚至可以添加静态缓存以最大限度地降低函数调用的成本。