如何从Drupal 8中的'select2'类型多字段中检索数据



我想我的问题可能是微不足道的一个,但我仍然找不到任何答案在互联网上,所以我很高兴任何提示。

在主题中,我正在Drupal 8中构建一个表单。一切都在工作,但我决定切换复选框FormElement到Select2。该字段应该是多项选择字符。

我的问题是如何在表单提交后检索此数据? 我尝试了很多东西,但$form_state->getValue('field')之后我得到的最好的是最后一个选择的值-不是全部。我需要所有选择的用户值来获得它们,然后转换介绍字符串。

谢谢你的帮助

我猜你正在使用模块Select2,否则你应该使用它。

我构建了一个带有允许多个选择的select2字段的测试表单。当表单提交时,$form_state->getValue('field')给出所选选项的键数组。您可以使用它来获取它们对应的值,如下所示:

<?php
namespace DrupaltestForm;
use DrupalCoreFormFormBase;
use DrupalCoreFormFormStateInterface;
/**
* Class TestForm.
*/
class TestForm extends FormBase {
protected $options =  [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
];
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'test_form';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form['field'] = [
'#type' => 'select2',
'#title' => t('Test field'),
'#options' => $this->options,
'#multiple' => TRUE,
];
$form['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Submit'),
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$selected_keys = $form_state->getValue('field');
$selected_values = array_intersect_key($this->options, $selected_keys);
print_r($selected_values); 
die;  // just to see debug result
}
}

最新更新