チェックボックス:デフォルト値を設定したり、フォームAPIを使用してユーザー定義値を表示するにはどうすればよいですか?[閉まっている]


7

私は、Drupal 7用に開発を開始したモジュールのフォーム内で、checkboxes要素を使用しています。これは、モジュール開発とForm APIを使用する最初の試みです。特定のサイトのすべてのコンテンツタイプをリストするチェックボックスのリストを作成しています。すべてのコンテンツタイプの配列は、以下を使用して取得できます$nodeTypesRaw=node_type_get_names();。キーとしてコンテンツタイプのマシン名を含み、値として人間が読める名前を含む配列が取得されます。

デフォルトでは、すべてのチェックボックスをオンにして、フォームが送信されるようにします。どうすればそれを達成できますか?drupalサイトのForm APIページは、チェックボックスのデフォルト値の設定に関してはあまり役に立ちません。

$nodeTypesRaw=node_type_get_names();
$nodeMachineNames=array_keys($nodeTypesRaw);
$form['process_comments']['custommod_published_comments_select_node_types']['custommod_published_comments_node_types_checkboxes']=array(
          '#deafult_value'=>$nodeMachineNames,
          '#options'=>$nodeTypesRaw,
          '#type'=>'checkboxes',
);

最初は上のコードから始めましたが、機能しません。チェックボックスのリストは表示されますが、デフォルトではチェックされていません。ただし、変数はフォームの送信時に取得されます(drushとvar_dumpで確認)。


2
それは#default_value、ではありません#deafult_value。FAはAFではありません。
Mołot

回答:


16

Drupal.orgから:

$form['element_id'] = array(
  '#type' => 'checkboxes',
  '#options' => array(1 => "One", 2 => "Two", 3 => "Three"),
  '#default_value' => array(1, 3),
);

デフォルト値は、選択したオプションのキーを表す配列として設定されます。

質問のコードを見ると、問題はスペルにあります。設定'#deafult_value'したいときに設定します'#default_value'


すべてのコンテンツタイプの配列は、以下を使用して取得できます$nodeTypesRaw=node_type_get_names();。キーとしてコンテンツタイプのマシン名を含み、値として人間が読める名前を含む配列が取得されます。変数を使用して「#default_value」を設定する$nodeMachineNames=array_keys($nodeTypesRaw);と、チェックボックスがオフのままになります。
bcosynot 2013

1
@ vr3690いいえ、デフォルト値を設定していません。質問の下のコメントを参照するか、私の回答を更新してください。
Mołot

10

あなたは、オプションの配列与える必要があるキーを、デフォルト値として(値ではない)などを

$options = array(
  'option_1' => t('Option 1'),
  'option_2' => t('Option 2'),
  'option_3' => t('Option 3'),
);

$defaults = array_keys($options);

$form['checkboxes'] = array(
  '#type' => 'checkboxes',
  '#title' => t('Something'),
  '#options' => $options,
  '#default_value' => $defaults,
);

こんにちは、私はすでに同様のコードを使用しています。私は自分の回答を編集して、同じものをそれに追加しました。これは動作しません。
bcosynot 2013

1
あなたは確信しているあなたがタイプミスを持っていない、インストール空欄に私のために罰金を作品#default_valueMołotが示唆@のように
クライヴ

不思議に思いますが、ある時点で変化しましたか?私が今探していますので、form_process_checkboxform_process_checkboxesDrupalの7の作業には、このためにできるようになり、そしてもちろん、それは私のために動作しません機構がありません。github.com/drupal/drupal/blob/7.x/includes/form.inc#L3270-L3351
ルカシュZaroda

私が@ŁukaszZarodaを知っているわけではありません... user_account_formたとえば、あなたが見た場合、同じ方法がロールに使用されています
Clive
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.