我想要用完全相同的值填充两个字段;用户应该只填一个 我还有一个函数来检查第二个字段是否为空。在Drupal 6和Drupal 7中如何获得和设置字段值有什么变化吗?
编辑:
我正在尝试编辑模块。
是的,我说的是节点字段
$ node数组只有我添加到节点的术语ID。如何知道其ID?
答案 0 :(得分:7)
由于您使用cck标记了此问题,我将假设您正在使用节点字段。
要将一个字段( x )的值复制到另一个字段( y ),您可以安装Computed Field模块并进行设置,以便 y 的值是根据 x 的值计算的,或者您可以创建一个类似于以下钩子的自定义模块:
此挂钩将字段 x 中的所有数据复制到字段 y :
function mymodule_node_presave($node) {
$node->field_y = $node->field_x;
}
此挂钩仅将字段 x 的第一个实例的值复制到字段 y :
function mymodule_node_presave($node) {
$node->field_y[$node->language][0]['value'] = $node->field_x[$node->language][0]['value'];
}
您可能希望在print_r
和$node->field_x
上执行$node->field_y
,因为根据您使用的字段类型,数据结构可能会有所不同。如果要检查其中一个字段是否为空,可以将赋值语句包装在调用自定义函数的条件中。
答案 1 :(得分:2)
查找字段值的一个好方法是使用字段API提供的field_get_items()。
field_get_items($entity_type, $entity, $field_name, $langcode = NULL);
其中:
$ entity_type:类似于'node'或'user',
$ entity:是否需要它的字段值的实体,
$ field_name:字段的计算机名称,
$ langcode:存储实体的语言,它是可选的,如果没有提供,field_get_items会自动找到它。