したがって、hook_field_schema 定義列があり、hook_field_widget_form が設定され、すべての列値が正しく保存されます。
しかし、2 つのフィールドをフィールドセットに入れるとすぐに、それらの値は保存も更新もされません。#tree => FALSE をあちこちに設定しようとしましたが、それも機能しません。
私は何が欠けていますか?サポートされていないだけですか?form_alter フックなどを使用してフィールドセットに移動する必要がありますか?
私は同じ問題を抱えていて、解決策を見つけることができませんでした。多くのことを試した後、それは非論理的なほど単純なものであることが判明しました. まあ、Drupal 初心者の目には。
最初に私はこのようなものを持っていました(簡素化されたバージョン):
$element['mymodulefieldset'] = array(
'#title' => 'Fieldset title',
'#type' => 'fieldset',
);
フィールドセットにフィールドを追加しました:
$element['mymodulefieldset']['fieldname'] = array(
'#title' => "Field title",
'#type' => 'textfield',
'#default_value' => '',
);
多くの異なるシナリオを試した後、次のコード行が (ある程度) 機能することがわかりました。フィールドセットを挿入する代わりに、次のように要素をフィールドセットに変更しました。
$element += array(
'#type' => 'fieldset',
'#tree' => true
);
次に、要素にフィールドを追加しました。
$element['fieldname'] = array(
'#title' => "Field title",
'#type' => 'textfield',
'#default_value' => '',
);
注意: #title や #weight などの一部の変数は、"ホーム » 管理 » 構造 » コンテンツ タイプ » [コンテンツ タイプ] で制御されますが、その他 (#collapsible や #collapsed など) はここで定義できます。
これがあなたを助けることを願っています!
私はそれが古い質問であることを知っていますが、この記事で説明されているこの問題の解決策があります。その#process
部分は、フィールドを適切に保存するために使用されるものです。
編集: @alexkb のコメントで説明されているように、この記事の著者はカスタム フィールドのサンプルを更新し、#process ハックを削除しました。より良い解決策として、GitHub コードを使用してください。