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的代码编写趋势吗?谢谢!
Think in Drupal
Think in Drupal 第4集,entity_metadata_wrapper 一节中,对这种方式做了很详细的介绍。这是Entity API模块提供的一个很方便的功能,很多人喜欢使用这种方式。
这种方式被Fago加入到了Drupal8的核心中了,是一种趋势,并且正在成为标准用法。
对于这种方式的批评还是有的,就是说,性能比较差,不过正在改进中。
哦,原来如此,我去翻翻书,谢谢!
哦,原来如此,我去翻翻书,谢谢!