如何在#after_build 中隐藏 CCK Nodereference 输入小部件? [英] How do I hide a CCK Nodereference input widget in #after_build?

查看:12
本文介绍了如何在#after_build 中隐藏 CCK Nodereference 输入小部件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我喜欢简化节点形式.我过去的一个技巧是当我想强制执行某种默认值时,有条件地在新节点创建时隐藏 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 输入小部件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆