Drupal — изменение типа поля формы с радио на флажки

#php #drupal #drupal-8 #drupal-modules

#php #drupal #drupal-8 #drupal-модули

Вопрос:

В настоящее время я работаю над проектом Drupal 8. Мне нужно изменить существующий тип поля формы с одного одиночного выбора (радио) на множественный выбор (флажки).

Я изменил ниже

 $form['job_type'] = [
 '#type' => 'radio',
  '#title' => $this->t('I am looking for'),
  '#options' => [
    'Full-time' => $this->t('Full Time'),
    'Part-time' => $this->t('Part Time'), 
    'Casual' => $this->t('Casual'),
    'All-of-the-above'=>$this->t('All of the above')
  ],
  '#weight' => '0',
  '#required'=>true,
];
  

Для

 $form['job_type'] = [
 '#type' => 'checkboxes',
  '#title' => $this->t('I am looking for'),
  '#options' => [
    'Full-time' => $this->t('Full Time'),
    'Part-time' => $this->t('Part Time'), 
    'Casual' => $this->t('Casual'),
    'All-of-the-above'=>$this->t('All of the above')
  ],
  '#weight' => '0',
  '#required'=>true,
];
  

Вот как выглядит код сохранения

 $profile->set('field_job_type', $form_state->getValue('job_type'));
$profile->save();
  

Когда форма отправлена, $form_state->getValue('job_type') выводится правильный выбор, но когда я получаю значение, используя $profile->get('field_job_type')->getValue() его, возвращает мне пустой массив.

Любая помощь была бы очень признательна!

Комментарии:

1. Единственное, о чем я могу думать, это то, что $form_state->getValue('job_type') оно пустое, когда вы сохраняете значение в $profile — вы проверили, возвращает ли оно значение в точке, в которую оно сохраняется $profile ? У $profile узла определенно есть вызываемое поле field_job_type ?

2. Было бы неплохо узнать, что такое ‘field_job_type’. Одна вещь, о которой я могу думать, — это также тип поля, который «field_job_type» даже имеет («Полный рабочий день», «Неполный рабочий день», «Случайный», «Все вышеперечисленное») в настройках значения ключевого поля. Если ‘field_job_type’ является ссылочным, вы должны вместо этого применить значение с ключом ‘target_id’.

3. «field_job_type» хранится в таблице field_job_type в field_job_type_value столбце. field_job_type_value является VARCHAR(255)

4. Если я напечатаю $form_state->getValue('job_type') перед сохранением, я могу подтвердить, что вижу данные.