2

这是我在 stackoverflow 上的第一篇文章,我会尽量做到简洁;-)

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

这是我的表单元素:

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

提交表单时,我确实收到这样的 SQL 错误,因为 Drupal 附加了占位符元素“值”和“格式”

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'], 
...
}
4

1 回答 1

2

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

function MYMODULE_form_name_validate($form, &$form_state) {
  $form_state['values']['description'] = $form_state['values']['description']['value'];
}
于 2013-09-11T15:34:58.677 回答