【问题标题】:Change fields in node from code从代码更改节点中的字段
【发布时间】:2013-02-24 09:51:00
【问题描述】:

如何在 Drupal 7 中访问节点中的字段。 这个我试过了,但是不行。

 $node=node_load($nid);
 $node->field_num[LANGUAGE_NONE][0]['value']=$num;

我想我必须更具体: 我首先创建一个节点并在一些字段上设置值,如下所示:

 $values = array(
'type' => 'scorings',
'uid' => $user->uid,
'status' => 1,
'comment' => 0,
'promote' => 0,
);
 $entity = entity_create('node', $values);
 $ewrapper = entity_metadata_wrapper('node', $entity);
 $entity->field_rond_nid[LANGUAGE_NONE][0]['value']=$nid_scorekort;
 $entity->field_golfid[LANGUAGE_NONE][0]['value']=$form_state['values']['golfid_1'];
 $ewrapper->save(true);
 entity_save('node', $entity);
 $nid=$entity->nid;

这很好用。然后我想从另一个函数访问这个节点(将 nid 传递给它)结束集值到另一个字段(field_score_1)。我试过这个:

 $node=node_load($nid, 'my_content type');
 $node->field_score_1[LANGUAGE_NONE][]['value'] = $my_value;

但这不起作用。 node_load 的接缝不允许我访问这些字段。

【问题讨论】:

  • 只需dpm($node) 看看你自己。为dpm()安装开发模块
  • 为了让问题更清楚,我已经编辑了它。
  • 你的第一个sn-p好像是对的,问题最后的sn-p是错的。请参阅 api.drupal.org 中的 node_load()。 node_load 的第二个参数应该是修订 ID 或不传递任何值。
  • 谢谢,那和 load_save($nod) 为我修复它。
  • 又卡住了!当只为节点设置值时,这工作正常。但是前一个字段附加到节点我需要用 1 来表示当前值。因此我需要读取当前值。如何获取该字段值?

标签: drupal drupal-7


【解决方案1】:

您的node_load() 呼叫不正确。

来自node_load() 的 Drupal API 文档中的函数声明是:

node.module node_load($nid = NULL, $vid = NULL, $reset = FALSE)

你的第二个参数是一个字符串,而不是一个数字,就像 $vid 那样。

如果 node_load() 返回 FALSE 则失败。

也许您想改用EntityFieldQuery()

【讨论】:

  • 我只是像这样把第二个参数放在一边,然后它就可以工作了:$node=node_load($nid)
猜你喜欢
  • 1970-01-01
  • 2019-12-17
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多