I asked this last time with 'Select Other', but I am still not understanding how to change custom element's type. In this scenario, I am attempting to build a Select type webform element. I am reusing the Webform Example attached to the webform module. But my issue is that I can not change it from an <input>
to a <select>
type.
Inside, \webform_example_element\src\Element\WebformExampleElement.php
I have tried:
public function getInfo() {
$class = get_class($this);
return [
'#title' => $this->t('Facility'),
'#type' => 'Select',
'#input' => false,
...
}
AND I have tried:
public static function processWebformAssignedBy(&$element, FormStateInterface $form_state, &$complete_form) {
$element['#tree'] = true;
$element['#type'] = 'select';
$element['#input'] = false;
$element['#options'] = [
'1' => 'One',
'2' => 'Two',
];
Using X-Debug, when the page is loaded I get:
$element = {array} [48]
#type = "select"
#title = "current_facility"
#multiple = false
#access_create_roles = {array} [2]
#access_update_roles = {array} [2]
#access_view_roles = {array} [2]
#webform = "generate_system_number_form_1_"
#webform_id = "generate_system_number_form_1_--current_facility"
#webform_key = "current_facility"
#webform_parent_key = "net_new_process_information"
#webform_parent_flexbox = false
#webform_depth = {int} 1
#webform_children = {array} [0]
#webform_multiple = false
#webform_composite = false
#webform_parents = {array} [2]
#admin_title = "current_facility"
#webform_plugin_id = "facility"
#webform_submission = "121"
#access = true
#webform_element = true
#allowed_tags = {array} [78]
#element_validate = {array} [1]
#pre_render = {array} [1]
#after_build = {array} [1]
#_webform_access = true
#_webform_states = {array} [0]
#theme = "input__webform_example_element__webform_generate_system_number_form_1__form__current_facility"
#theme_wrappers = {array} [1]
#formdazzle = {array} [3]
#process = {array} [3]
#input = false
#value_callback = {array} [2]
#defaults_loaded = true
#tree = true
#parents = {array} [1]
#array_parents = {array} [3]
#weight = {float} 0.007
#processed = false
#required = false
#attributes = {array} [1]
#title_display = "before"
#description_display = "after"
#errors = null
#id = "edit-current-facility"
#name = "current_facility"
#value = ""
#options = {array} [2]
But after returning, I still get an <input>
field. Any suggestions how to alter the input
type to be select
? Thank you