Как скрыть виджет ввода CCK Nodereference в #after_build? - PullRequest
0 голосов
/ 31 августа 2010

Мне нравится упрощать форму узла.Одним из моих приемов в прошлом было условное скрытие элементов CCK при создании нового узла, когда я хочу применить какое-то значение по умолчанию.Один из моих любимых трюков - смахивать вещи, поставленные на место модулем Prepopulate .К сожалению для меня, это недавний переход к механизму на #after_build, похоже, создает все виды коллизий в том, как я могу управлять виджетом.1007 *

  $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 .Это меня огорчает.

1 Ответ

1 голос
/ 12 октября 2010

Скрытого недостаточно.Попробуйте это:

$form['field_my_nodereference_field'][0]['#type'] = 'nodereference_hidden';

, когда тип является полем CCK, вы должны передать этот формат _hidden

например для простого текстового поля, которое я использовал

$form['field_srt'][0]['#type'] = 'text_hidden';

или для поля файлового поля, которое я использовал

$form['field_myfile'][0]['#type'] = 'filefield_hidden';
...