这是我在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'],
...
}
答案 0 :(得分:2)
如果您只对文本本身感兴趣(不是格式),请为表单添加验证处理程序并使用类似这样的内容
function MYMODULE_form_name_validate($form, &$form_state) {
$form_state['values']['description'] = $form_state['values']['description']['value'];
}