2

これは私の最初の投稿です。

CKeditor を使用してテキストエリア フォーム フィールドをデータベースに挿入するときに問題が発生します。

ここに私のフォーム要素があります:

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

フォームを送信すると、Drupal がプレースホルダー要素 'value' と 'format' を追加するため、このような SQL エラーが発生します。

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)

残念ながら、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 に答える