Php 在Drupal 7函数中嵌入/注入$request数组

Php 在Drupal 7函数中嵌入/注入$request数组,php,drupal,drupal-7,drupal-modules,Php,Drupal,Drupal 7,Drupal Modules,我的自定义模块中有一个$request数组,它引用/调用我的/libraries目录中的API库。当前在我的模块中,此$request位于我的模块hook\u node\u view函数之外。它是这样工作的。但是,我想将$request数组注入/嵌入到hook\u node\u view函数中,以便它从Drupal函数中进行处理。但是,当我这样做时,它会停止工作,并且不会正确调用库 关于如何最好地构建Drupal函数以使其能够处理此数组的想法 下面是$request的一个示例: <?php

我的自定义模块中有一个$request数组,它引用/调用我的/libraries目录中的API库。当前在我的模块中,此$request位于我的模块hook\u node\u view函数之外。它是这样工作的。但是,我想将$request数组注入/嵌入到hook\u node\u 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,

        );
    }
  }
}

功能分配\u节点\u视图($node,$view\u模式)
{
如果($node->nid==3356){
如果($view\u mode=='full'){
$node->content['my\u extra\u content']=数组(
“#标记”=>”,
“#重量”=>100,
);
}
}
如果($node->nid==3354){
如果($view\u mode=='full'){
$node->content['my\u extra\u content']=数组(
“#标记”=>”,
“#重量”=>100,
);
}
}
}

嗯……Drupal似乎有自己的
$request
全局数组,当您在功能之外重新定义它时,实际上是在用数据更改Drupal的数组

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

尝试添加:

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


但是,我不认为这是实现每个人都在尝试的目标的正确方法。

嗯……Drupal似乎有自己的
$request
全局数组,当您在函数之外重新定义它时,实际上是在用数据更改Drupal的数组

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

尝试添加:

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


然而,我不认为这是实现每个人都想达到的目标的正确方法。

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


如果计算量大,甚至可以添加静态缓存以最小化函数调用的成本。

您应该避免全局缓存。而是创建一个类似于mymodule_get_request()的函数,而不是返回请求。然后可以在钩子中调用此函数

如果计算量很大,甚至可以添加静态缓存以最小化函数调用的成本