You are here

请问关于保存节点字段值的操作代码

流云 的头像
Submitted by 流云 on 星期五, 2013-04-12 02:03

hi,老葛,最近跟大家新学了一个知识,我当时的需求是,要在自定义代码中修改一个节点的一个字段的值,然后保存。

无奈这个字段如果原来是空的,我得先判断是否为空,这个让我感觉很不利索,所以想找一个函数可以来干这样的事情,类似获取字段值时用field_view_value一样,不用去考虑判断它是否为空。

当然最后我没有找到有这样的操作函数,群里的朋友倒是推荐了一个采用面向对象的方法:

我这个需求最后就这么写的了:

 

$node = node_load(876);
$date = time();
 
$node_wrapper = entity_metadata_wrapper('node', $node);
$node_wrapper->field_order_shoumo_date->set($date);
$node_wrapper->save();
 
由于我对面向对象概念不是很习惯,不过看起来是蛮利索的,有点意思,不过就是感觉为了我这个操作,写的代码稍多了。
不知您怎么看?drupal有没有提供一个这样的操作封装函数呢?这个方法目前就是最好的方案了吗?这会是D8的代码编写趋势吗?谢谢!

论坛:

Drupal版本:

g089h515r806 的头像

Think in Drupal 第4集,entity_metadata_wrapper 一节中,对这种方式做了很详细的介绍。这是Entity API模块提供的一个很方便的功能,很多人喜欢使用这种方式。

这种方式被Fago加入到了Drupal8的核心中了,是一种趋势,并且正在成为标准用法。

对于这种方式的批评还是有的,就是说,性能比较差,不过正在改进中。