1

埋め込みフィールド コレクション の無制限のインスタンスを含むことができるコンテンツ タイプがありfield_foo、各コレクションには と の 2 つのフィールドfield_foo_barが含まれますfield_foo_baz

field_fooこのコンテンツ タイプのノード作成フォームを変更して、既存のノードの同じフィールドの値を事前入力するようにしたいと考えています。

デフォルトでは、ノード作成フォームには次のものがあります。

FIELD FOO

FOO BAR [            ]
FOO BAZ [            ]

...そして、たとえば次のように設定したいと思います:

FIELD FOO

FOO BAR [Bar value #1]
FOO BAZ [Baz value #1]

FOO BAR [Bar value #2]
FOO BAZ [Baz value #2]

これどうやってするの?単純なものが欠けているような気がします。

空のフィールド コレクションを単純に複製してとhook_form_alter()の値を適切に変更しようとしましたが、行の追加/削除、複数のデルタ、重みなどの調整で問題が発生し、間違ったツリーを吠えているように見えます。field_foo_barfield_foo_baz

4

2 に答える 2

0

hook_form_alterは、これを行う正しい方法です。他の問題が発生している場合は、フィールドに正しく入力されていないか、別のモジュールがフィールドを編集していることが原因です。前者の場合は、hook_node_insertにファイルされている形式を確認してください。後者の場合、モジュールの重みを変更して、最後に起動し、変更によって他のモジュールが上書きされるようにします。

于 2013-01-11T16:18:11.497 に答える
0

フィールド コレクションは実際にはエンティティであるため、hook_entity_insert() を使用して、挿入されるエンティティがフィールド コレクションのインスタンスであるかどうかを確認し、そうであれば値を設定できますか。

于 2013-01-11T04:27:37.453 に答える