2011-03-27 125 views
3

我有兩個字段,我想用完全相同的值填充;用戶只能填寫一個。
我也有一個函數,檢查第二個字段是否爲空。 Drupal 6和Drupal 7中的字段值是如何獲得和設置的?編輯: 我正在嘗試編輯模塊。
是的,我在談論節點字段。
$ node數組只有我添加到節點的術語ID。如何獲得術語名稱,知道其ID?以編程方式獲取和設置字段值

+1

你的問題是什麼?這是關於如何檢查字段的值?還是要執行檢查?如何將模塊(此部分)從D6升級到D7? – Haza 2011-03-27 11:32:35

回答

7

既然你用cck標記了這個問題,我會假設你正在使用節點字段。

一個場(X)的值複製到另一個(Ý),既可以安裝Computed Field模塊並對其進行設置,使得ÿ的值是從的值來計算X,或者您可以創建類似下面的東西掛鉤自定義模塊:

這個鉤子將所有數據從現場X到現場Ÿ

function mymodule_node_presave($node) { 
    $node->field_y = $node->field_x; 
} 

該鉤子只複製領域X的第一個實例的值到現場Ÿ

function mymodule_node_presave($node) { 
    $node->field_y[$node->language][0]['value'] = $node->field_x[$node->language][0]['value']; 
} 

你可能想要做$node->field_x一個print_r$node->field_y爲您的數據結構根據您使用的字段的類型可能會有所不同。如果您想檢查是否有任何一個字段爲空,則可以將賦值語句包裝在調用您的自定義函數的條件中。

+0

爲了檢查我需要的數據我使用了Devel模塊,所以不需要在print_r函數中崩潰 – Povylas 2011-03-29 07:52:52

2

查找字段值的一種好方法是使用由字段API提供的field_get_items()

field_get_items($entity_type, $entity, $field_name, $langcode = NULL); 

其中:

$ ENTITY_TYPE:是像 '節點' 或 '用戶',

$實體:是它需要的字段值的實體,

$ FIELD_NAME :字段的機器名稱,

$ langcode:實體存儲的語言,它是可選的,如果未提供,field_get_items將自動找到它。

相關問題