2016-09-20 12 views
1

my/librariesディレクトリのAPIライブラリを参照/作成するカスタムモジュールに$ request配列があります。現在私のモジュールでは、この$リクエストは私のモジュールhook_node_viewの外にあります。このように動作します。しかし、Drupal関数内から処理するように$ request配列をhook_node_view関数に注入/埋め込みたいと思います。しかし、私はこれを行うときに動作を停止し、ライブラリへの正しい呼び出しを行いません。

Drupal関数をどのように構築してこの配列を処理できるかについての考え方はありますか?

ここで$要求の例です:

<?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, 

     ); 
    } 
    } 
} 

答えて

0

うーん... Drupalは、関数の外に、それが自分の$requestグローバル配列のしていると、あなたはときに再定義し、あなたが実際にはDrupalの配列を変更しているようですあなたのデータで

しかし、あなたが関数から行うときには、ローカルの$request配列を作成しており、その関数でのみ利用可能であり、グローバルなDrupalの配列は変更されません。追加

してみてください。あなたの関数で

global $request; 

あなたはその配列の使用を開始する前に。

しかし、あなたがしようとしていることを達成するのが適切な方法だとは思わない。

0

グローバルでは使用しないでください。代わりに、リクエストを返すよりもmymodule_get_request()のような関数を作成してください。フック内でこの関数を呼び出すことができます。

計算量が多い場合は、静的キャッシュを追加して関数呼び出しのコストを最小限に抑えることもできます。

関連する問題