0

こんにちは、私はここで本当に困惑しています。私はしばらくこれを機能させようとしてきました..

別のフィールドの値に基づいて ajax を使用してオプションが入力される CCK リスト (テキスト) 選択フィールドがあります。問題は、選択フィールドに「許可された値」を設定していないことです。フォームの入力中にプログラムによって入力されるためです。これにより、次の問題が発生します。

  1. リスト要素が「無制限」に設定されていても、1 つの値しか選択できません
  2. フォームを保存すると、不正な選択エラーが発生します
  3. 編集フォームはデフォルト値を設定しません

なぜこれが起こっているのかは理解できますが、クリーンな方法で回避する方法はわかりません。ajax 呼び出し中にフィールドの許可された値を更新しようとしましたが、「既存のデータを持つリスト フィールド ___ はそのキーを変更できません」というメッセージが表示されます。

ありがとう

CCK リストをプログラムで入力する

4

1 に答える 1

0

私が達成したのは、更新された値で CCK フィールドを再レンダリングする ajax コールバックを含む別のフィールドの値に基づいて、既存の CCK フィールドの選択リストの値を動的に更新することです。

フォーム API を使用してフォーム/要素を最初から作成する場合、これは簡単なことですが、エンティティや既存のフィールドを操作する場合はオプションではない場合があります。

要するに、私は次のことをしました:

  1. allowed_values_function を使用するようにフィールド設定を更新します
  2. CCK フィールド リストを設定するためのカスタム関数を実装する
  3. get/set_variable を使用して、ajax 呼び出し間で許可された値を保存します
  4. hook_field_attach_validate を使用して、「不正な選択」を削除します。コア list.module によって生成されるエラー
于 2014-06-03T15:59:50.217 に答える