2011-03-27 124 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将自动找到它。

相关问题