Php 在Drupal 7函数中嵌入/注入$request数组
我的自定义模块中有一个$request数组,它引用/调用我的/libraries目录中的API库。当前在我的模块中,此$request位于我的模块hook\u node\u view函数之外。它是这样工作的。但是,我想将$request数组注入/嵌入到hook\u node\u view函数中,以便它从Drupal函数中进行处理。但是,当我这样做时,它会停止工作,并且不会正确调用库 关于如何最好地构建Drupal函数以使其能够处理此数组的想法 下面是$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
<?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()的函数,而不是返回请求。然后可以在钩子中调用此函数 如果计算量很大,甚至可以添加静态缓存以最小化函数调用的成本