WYSIWYG textarea字段上的Drupal 7 db_insert

时间:2013-09-11 15:11:33

标签: drupal textarea wysiwyg

这是我在stackoverflow上发表的第一篇文章,我会尝试制作尖锐和简短的; - )

使用CKeditor将textarea表单字段插入数据库时​​遇到问题。

这是我的表单元素:

    $form['add']['description'] = array(
    '#wysiwyg' => true,
    '#name' => 'description',
    '#title' => t('description'),
    '#type' => 'text_format',
    '#base_type' => 'textarea',
);

提交表单时,我会收到类似SQL的错误,因为Drupal会附加占位符元素'value'和'format'

db_insert failed. Message = SQLSTATE[21S01]: 
Insert value list does not match column list: 
1136 Column count doesn't match value count at row 1, 
query= INSERT INTO {tablename} (description) 
VALUES (:db_insert_placeholder_13_value, :db_insert_placeholder_13_format)

不幸的是,我必须以这种方式设置textarea以使CKeditor工作。你能建议我如何摆脱它 :db_insert_placeholder_13_value, :db_insert_placeholder_13_format 再来一个变量?

我真的很高兴你的帮助

问题已解决 ---傻我,应该更多地使用我的眼镜:-D

只需在提交钩子中使用正确的数组索引,即可将数据保存到数据库中,并且可以正常工作:

function MYMODULE_form_add_submit($form, &$form_state) {
...
'description' => $form_state['values']['description']['value'], 
...
}

1 个答案:

答案 0 :(得分:2)

如果您只对文本本身感兴趣(不是格式),请为表单添加验证处理程序并使用类似这样的内容

function MYMODULE_form_name_validate($form, &$form_state) {
  $form_state['values']['description'] = $form_state['values']['description']['value'];
}