#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')
перед сохранением, я могу подтвердить, что вижу данные.