2012-05-10 72 views
0

我有一些內容類型(節點)附加到各種分類法。對於特定的節點類型,我想對分類做一些驗證。我不想對引用分類的節點類型及其相應字段進行硬編碼。所以我把它們放在陣列中。Drupal - PHP驗證

但是,我無法取消引用字段名稱。我已經嘗試過兩次$$,引號等,但無法使其正常工作。我想做什麼?

下面是一個獨立的PHP,我試圖去工作。

<?php 

$node = (object) array(
    'nid' => NULL, 
    'vid' => NULL, 
    'uid' => '1', 
    'type' => 'price_document', 
    'language' => 'und', 
    'field_taxonomy_price' => array(
     'und' => array(
      array(
       'tid' => '94' 
      ) 
     ) 
    ), 
); 


    $nodes_to_check = array("price_document" => "field_taxonomy_price", 
          "package"  => "field_taxonomy_package", 
         ); 



    if (array_key_exists($node->type,$nodes_to_check)) { 
    $taxonomy_field = $nodes_to_check[$node->type]; 
    print_r($taxonomy_field); 
    $tid = $node->field_taxonomy_price ['und'][0]['tid']; // <- this works but, how 
    //$tid = $node->"$$taxonomy_field" ['und'][0]['tid'];  <- can I deref variable? 
    } 
?> 

回答

1

嗯,你可以這樣做:

$taxonomy_field = $nodes_to_check[$node->type]; 
$tid = $node->{$taxonomy_field}['und'][0]['tid]; 

你不需要雙美元的跡象。這是在你想要做這樣的事情:

$dog = "I am a dog"; 
$var = "dog"; 
$$var = "Now I'm a pussycat"; 
echo $dog; // Output: Now I'm a pussycat