не могу получить значение флажков, используя друпи форму api - PullRequest
1 голос
/ 31 марта 2012

У меня есть форма в drupal, которая загружает изображения и имеет несколько флажков. Вот форма:

$form['checklist_fieldset'] = array(
    '#type' => 'fieldset',
    '#title' => t('Check List'),
    '#collapsible' => FALSE,
    '#collapsed' => FALSE,  
  );
$form['checklist_fieldset']['heating'] = array(
   '#type' => 'checkboxes',
   '#title' => t('Heating options'),

   '#options' => array(
  '0' => t('Yes'),
  '1' => t('No')
  ),
   '#description' => t('Heating details.')
  );

и вот моя функция отправки, где я обрабатываю загрузку изображений и также собираю значения флажков. Я получаю сообщение об успехе, и изображение загружается, но не получает значения флажков.

function property_add_view_submit($form,&$form_state){
$validators = array();



if($file = file_save_upload('p_file1',$validators,file_direcotry_path)){
$heating = array_keys($form_state['values']['heating']);
drupal_set_message(t('Property Saved! '.$heating));
dpm( $form_state['values']['heating']);
}

Ответы [ 2 ]

5 голосов
/ 31 марта 2012

Когда вы используете #options для элемента FAPI, значение, передаваемое $form_state , равно ключу массива, поэтому вам не нужно использовать array_keys().

Я не уверен, почему вы используете checkboxes для да / нет, обычно можно использовать простой элемент checkbox.Однако, если это действительно то, что вы хотите сделать:

  1. Ваш #options не может содержать опцию с 0 в качестве ключа массива, он будет автоматически отфильтрован, и вы никогда не узнаетеесли эта опция была отмечена.
  2. Вы должны использовать $heating_options_chosen = array_filter($form_state['values']['heating'], чтобы получить выбранные опции флажков.

Я, честно говоря, думаю, что ваш код должен выглядеть так:1022 *

0 голосов
/ 01 октября 2018

Если у меня есть флажок Друзья и параметры похожи на

[ ] 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);
    }
  }
}

Если пользователь выбралabc и ghi тогда вы получите 1, 3 как результат $friends

Если вы хотите узнать значение, используйте $friends = $friends.", ".$value;

, это сработалодля меня .. надеюсь, это вам тоже поможет :)

...