drupal字段小部件未保存提交的数据
我试图创建一个自定义小部件,但当我提交时,Drupal似乎没有保存任何数据。当使用drupal字段小部件未保存提交的数据,drupal,drupal-7,drupal-modules,Drupal,Drupal 7,Drupal Modules,我试图创建一个自定义小部件,但当我提交时,Drupal似乎没有保存任何数据。当使用hook\u field\u attach\u submit()显示我粘贴的数据时,它会被列为null 奇怪的是,如果我将#type更改为单个文本字段而不是字段集,它将只保存已输入字符串的第一个字符 这似乎是一个验证问题,但我不确定如何连接到它或调试问题。我能从这里走到哪里 <?php function guide_field_widget_info(){ dpm("guide_field_widget_
hook\u field\u attach\u submit()
显示我粘贴的数据时,它会被列为null
奇怪的是,如果我将#type
更改为单个文本字段而不是字段集,它将只保存已输入字符串的第一个字符
这似乎是一个验证问题,但我不确定如何连接到它或调试问题。我能从这里走到哪里
<?php
function guide_field_widget_info(){
dpm("guide_field_widget_info");
return array(
'guide_text_textfield' => array(
'label' => t('test Text field'),
'field types' => array('text'),
'settings' => array('size' => 60),
'behaviors' => array(
'multiple values' => FIELD_BEHAVIOR_CUSTOM,
'default value' => FIELD_BEHAVIOR_DEFAULT,
),
)
);
}
function guide_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$field_name = $instance['field_name'];
$required = $element['#required'];
$item =& $items[$delta];
$element += array(
'#type' => 'fieldset',
'#title' => t('helloooooooo'),
);
$required = $element['#required'];
$item =& $items[$delta];
$element['nametest'] = array(
'#title' => t('Name'),
'#type' => 'textfield',
'#required' => $required,
// use #default_value to prepopulate the element
// with the current saved value
'#default_value' => isset($item['nametest']) ? $item['nametest'] : '',
);
$element['checkme'] = array(
'#title' => t('Check this box or dont'),
'#type' => 'checkbox',
'#default_value' => isset($item['checkme']) ? $item['checkme'] : '',
);
//When changing the above code to have a single field, $value is no longer null but will display the first character of the string. I've pasted the code I used to test beloe
/*
$element+= array(
'#title' => t('Name'),
'#type' => 'textfield',
'#default_value' => isset($item['nametest']) ? $item['nametest'] : '',
);
*/
return $element;
}
//hooking this here is required given that after submit, the value is a multidimensional array, whereas the expected value of text is, well, text :-)
function guide_field_attach_submit($entity_type, $entity, $form, &$form_state){
dpm($form,"guide_field_attach_submit data"); //shows $form[field_test_field][und][0] [value] as being null
}
钩子字段为空是强制性的,必须按照以下方式实现:
/**
* Implements hook_field_is_empty().
*/
function MODULENAME_field_is_empty($item, $field) {
if ($field['type'] == 'FIELDTYPE') {
if (empty($item[$field['type']]['YourField']) ) {
return (TRUE);
}
}
return (FALSE);
}
保存第一个字符听起来像是一个熟悉的问题。看看我之前的答案是否对你有帮助。不要冒险。我尝试了提供的代码,但仍然得到了相同的结果。你找到了这个问题的解决方案吗?相关:它不是FIELDNAME\u field\u是空的,而是HOOK\u field\u是空的,其中HOOK是模块的名称。