Drupal 7:在节点加载后更改nid

时间:2012-11-14 17:29:07

标签: drupal drupal-7

我在网站网站的新发展中遇到了一个非常奇怪的案例。我创建了一个块(使用自定义模块)并创建了一个node_load。这里一切正常,节点加载,块显示。但是如果我改变节点的nid(通过例子设置为null)并且什么都不做(没有node_save,没有函数调用,没有这个对象),我有一些不同模块的注意事项(比如3或4个模块)。我知道这只是注意,但我理解为什么改变变量的简单事实永远不会使用,触发一些错误.....例如:

$tmp = node_load(arg(1));
$tmp->nid=null;

=>错误(很多“在不同的名称功能中试图获取非对象的属性”)

$tmp = node_load(arg(1));
$node=$tmp;
$node->nid=null;

=>错误(很多“在不同的名称功能中试图获取非对象的属性”)

$tmp = node_load(arg(1));
$node = new stdClass();
//Copy via une boucle sinon on a des erreurs.
foreach ($tmp as $key => $value) {
  if ($key != 'nid') $node->{$key} = $value;
}

=>一切都好吗

1 个答案:

答案 0 :(得分:0)

好吧最后它是引用对象php的comportement,我们必须在对象上应用方法Clone php来制作副本,或者对象将是refeerences