`

清空掉taxonomy_get_tree缓存

 
阅读更多

taxonomy_get_tree($vid, $parent, $depth, $max_depth)

 

这个函数生成一个词汇表的层级化表示。参数$vid就是用来生成层级树的词汇表的词汇表ID。如果你不想为一个词汇表生成一个整树的话,而只想生成一个以$parent声明的词语ID为根的子树,这时你可以声明参数$parent。参数$depth是内部使用的参数,默认为-1.参数$max_depth是一个整数,用来指出返回树的层级数,它默认为NULL,这意味着所有的层级。这个函数返回了一个包含词语对象的数组,这里向词语对象添加了“depth” 和 “parents”键。“depth” 键是一个整数,用来指示词语在树中所处的层级;而parents”键是一个数组,包含了词语的所有父词语的词语ID。例如,让我们为表14-3所列的词汇表得到相应的结果,它的词汇表ID为2:

$vid = 2;

print_r($taxonomy_get_tree($vid));

 

剖析:该函数中用到drupal_static();缓存了该函数执行的数据,因此,在submit函数中调用taxonomy_get_tree时拿到的是缓存时的数据,而不是最新的tree的数据,

 

解决办法:清空掉taxonomy_get_tree函数的缓存,如下:

 

function test_form_submit(&$form, &$form_state) {

 

//下面的3句话后,变量$tree ,拿到的才是submit之后,tree的最新数据。

 

  $children = &drupal_static('taxonomy_get_tree', array(), TRUE);  

  $parents = &drupal_static('taxonomy_get_tree' . ':parents', array(), TRUE);

  $terms = &drupal_static('taxonomy_get_tree' . ':terms', array(), TRUE);

 

  $tree = taxonomy_get_tree($vid, 0, NULL, TRUE);

 

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics