问题描述
我喜欢简化节点形式.我过去的一个技巧是当我想强制执行某种默认值时,有条件地在新节点创建时隐藏 CCK 元素.我最喜欢的技巧之一是清除 Prepopulate 模块放置的东西.对我来说不幸的是,最近转向基于 #after_build
的机制似乎在我如何操作小部件方面产生了各种冲突.
I like simplifying the node form. One of my tricks in the past has been to conditionally hide CCK elements on new node creation when I want to enforce some kind of default. One of my favorite tricks is to whisk away things put in place by the Prepopulate module. Unfortunately for me, it's recent move to an #after_build
-based mechanism seems to be creating all kinds of collisions in how I can manipulate the widget.
$form['field_my_nodereference_field'][0]['#type'] = 'hidden';
$form['field_my_nodereference_field'][0]['#value'] = $form['field_my_nodereference_field'][0]['#default_value']['nid'];
$form['field_my_nodereference_field'][0]['#parents'] = array('field_my_nodereference_field', 0, 'nid');
但是当我尝试在 #after_build
中玩这个游戏时,我遇到了 hidden
类型验证或 nodereference_autocomplete_validation
的错误.我已经求助于有条件地添加一个 CSS 文件.这让我很伤心.
But when I try to play this game in #after_build
, I run into errors with the hidden
type's validation, or the nodereference_autocomplete_validation
. I have resorted to conditionally adding a CSS file. This makes me sad.
推荐答案
隐藏是不够的.试试这个:
Hidden is not enough. Try this one:
$form['field_my_nodereference_field'][0]['#type'] = 'nodereference_hidden';
当类型是 CCK 字段时,你必须传递这种格式 _hidden
when the type is a CCK field you have to pass this format _hidden
例如我使用的一个简单的文本字段
for instance for a simple text field I used
$form['field_srt'][0]['#type'] = 'text_hidden';
或者对于我使用的文件字段
or for a filefield field I used
$form['field_myfile'][0]['#type'] = 'filefield_hidden';
这篇关于如何在#after_build 中隐藏 CCK Nodereference 输入小部件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!