以编程方式获取和设置字段值

发布于 2024-10-27 04:17:38 字数 187 浏览 0 评论 0原文

我想用完全相同的值填充两个字段;用户只需填写一项。
我还有一个函数可以检查第二个字段是否为空。 Drupal 6 和 Drupal 7 中字段值的获取和设置方式有什么变化吗?

编辑: 我现在正在尝试编辑模块。
是的,我说的是节点字段。
$node 数组只有我添加到节点的术语 ID。知道术语 ID 后,如何获取术语名称?

I have two fields I want to fill with the exactly same values; users should fill only one.
I also have a function which checks if the second field is empty. Is there any change in how the field values are obtained and set in Drupal 6, and Drupal 7?

EDIT:
I am trying to edit module right now.
Yes, I am talking about node fields.
$node array has only ID of terms I added to node. How do I get the term name, knowing its ID?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

九厘米的零° 2024-11-03 04:17:38

由于您用 cck 标记了这个问题,我将假设您正在使用节点字段。

要将一个字段 (x) 的值复制到另一个字段 (y),您可以安装 计算字段 模块并对其进行设置,以便根据 x 的值计算 y 的值,或者您可以使用类似于以下挂钩的内容创建自定义模块:

此挂钩将所有数据从字段 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'];
}

您可能希望在 $node->field_x 上执行 print_r$node->field_y 因为您的数据结构可能会根据您使用的字段类型而有所不同。如果您想检查其中一个字段是否为空,您可以将赋值语句包装在调用自定义函数的条件中。

Since you tagged this question with cck, I'm going to assume you are working with node fields.

To copy the value of one field (x) to another (y), you can either install the Computed Field module and set it up so that the value of y is computed from the value of x, or you can create a custom module with something similar to the following hooks:

This hook copies all of the data from field x to field y:

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

This hook only copies the value of the first instance of field x to field y:

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

You might want to do a print_r on $node->field_x and $node->field_y as the structure of your data may be different based on the type of field you are using. If you want to check if either of the fields are empty, you can wrap the assignment statement in a conditional that calls your custom function.

一袭白衣梦中忆 2024-11-03 04:17:38

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

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

其中:

$entity_type:类似于“节点”或“用户”,

$entity:是否需要其字段值的实体,

$field_name:字段的机器名称,

$langcode:实体存储的语言,它是可选的,如果没有提供,field_get_items会自动找到它。

One good way for finding out a field's value, is using field_get_items() which is provided by field API.

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

Where:

$entity_type: Is something like 'node' or 'user',

$entity: Is the entity which it's field value is needed,

$field_name: machine name of the field,

$langcode: The language that entity is stored in, It is optional and if not provided, field_get_items will find it out automatically.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文