我有一个我需要在hook_form_alter中访问的cck字段,因此我可以使用动态值设置某个字段的默认值。
显然,node_load不能帮我完成工作。
if ($form_id == 'some_form_id') {
$node = node_load($item->nid);
$somevariable = $node->field_cck_foo[0]['value'] * 2;
$form ['xxx']['xxx']['#default_value'] = $somevariable;
}
我如何访问节点项,以便在hook_form_alter中使用它?请指教。感谢。
答案 0 :(得分:1)
node_load()将获取所有CCK字段值,尝试执行var_dump以查看正在进行的操作。
如果node_load()没有带来完整的节点结构,请尝试使用此解决方法清除缓存http://drupal.org/node/158237#comment-4593950
答案 1 :(得分:1)
hook_form_alter()是一个通用钩子,可用于改变任何形式。为了帮助您找到解决方案,我们需要有关您正在使用的上下文的更多信息(例如,您尝试更改哪种形式?)
我的猜测是你正在改变node_form()。如果您查看表单构建器函数,您会看到该节点在$ form_state ['node']中可用,供您使用。
答案 2 :(得分:0)
对于D7:
$arg = arg();
if($arg[0] == 'node' && !empty($arg[1])) {
$node = node_load(arg(1));
}