web-dev-qa-db-ja.com

チェックボックスの値を取得するにはどうすればよいですか?

Drupal 7を使用しており、ノードにチェックボックスを追加しました。

$results = query();

foreach ($results as $result) {
  $name = $result['name'];
  $resultarray[$result['id']] = $name; 
}

$form['friends'] = array(
  '#title' => "results",
  '#type' => 'checkboxes',
  '#options' => $resultarray,
);

私のノードではチェックボックスが表示されます。

現在、選択したチェックボックスの値を取得するのに苦労しています。

function friendmodule_form_submit($form, &$form_state) {

  $friends = $form_state['values']['friends'];

  // do what ever with $friends 
}

しかし、何も表示されません。エコー$friendsprint_r、それらをDrupalメッセージとして表示しますが、何も表示されていません。

選択したチェックボックスの値を取得するにはどうすればよいですか?

2
Sam Healey

フォームの_$resultarray_変数に実際にデータが含まれていると仮定すると、次のコードは、選択されたIDのリストを取得します。

_function friendmodule_form_submit($form, &$form_state) {   
  $friend_ids = array_filter($form_state['values']['friends']);
}
_

checkboxes要素が送信されると、元のオプションキーはすべて_$form_state['values']'friends']_配列に含まれますが、選択されたものだけが正の値になります。残りの値はゼロになるので、array_filter()を使用して、haveが選択されているオプションのIDのみを抽出する必要があります。

また、現時点では、送信関数に構文エラーがあります(余分な終了_)_)。おそらくそれがエラーの原因です。

8
Clive

Drupal 8

「友達」のチェックボックスがあり、オプションが

[ ] abc
[ ] def
[ ] ghi
[ ] jkl

ユーザーがマークしたオプションを知りたい場合は、以下の機能を使用します。

if ($form_state->getValue('friends') != NULL) {

  foreach ($form_state->getValue('friends') as $key => $value) {

    if ($value != 0) {

      $friends = $friends . ", " . $key;
      $friends = substr_replace($friends, "", 0, 1);
    }
  }
}

ユーザーがabcghiを選択した場合、13結果として$friends。値を知りたい場合は、

$friends = $friends . ", " . $value;

それは私のために働いた。それがあなたにも役立つことを願っています。

0
PADMAJA SONWANE