A comment field type in a node(rendered as a form in the node view) has a user entity reference field where multiple user entities can be input and has default values set with:
foreach ($user_ids_array as $key => $value){
$drupal_user_object = \Drupal\user\Entity\User::load($value);
if($drupal_user_object){
$form['field_in_question']['widget'][$key]['target_id']['#default_value'] = $drupal_user_object;
}
}
using form alter. In the individual comment's edit form(linked through the edit button of saved comments) the default values are rendered correctly and are visible. However the comment's edit form in the corresponding node's view does not display the user entities properly:
Only the first user entity is loaded and the rest are blank. The render array(of 'widget' index) of the field looks like:
0 => array:3 [▼
"target_id" => array:16 [▼
"#title" => Drupal\Core\StringTranslation\TranslatableMarkup {#8704 ▶}
"#title_display" => "invisible"
"#description" => ""
"#field_parents" => []
"#required" => false
"#delta" => 0
"#weight" => 0
"#type" => "entity_autocomplete"
"#target_type" => "user"
"#selection_handler" => "default:user"
"#selection_settings" => array:7 [▶]
"#validate_reference" => false
"#maxlength" => 1024
"#default_value" => Drupal\user\Entity\User {#4481 ▶}
"#size" => 60
"#placeholder" => ""
]
"_weight" => array:6 [▶]
"_actions" => array:2 [▶]
]
1 => array:3 [▼
"target_id" => array:16 [▼
"#default_value" => Drupal\user\Entity\User {#1383 ▶}
]
"_weight" => array:6 [▶]
"_actions" => array:2 [▶]
]
2 => array:3 [▼
"target_id" => array:16 [▼
"#default_value" => Drupal\user\Entity\User {#1383 ▶}
]
"_weight" => array:6 [▶]
"_actions" => array:2 [▶]
]
Besides the first default value, rest of them have no indexes set besides '#default_value'. Is there a way I can ensure that the render array is properly loaded for the rest of the values?
$key
, or User ID, for the widget delta ($form['field_in_question']['widget'][...]
), but that number needs to be zero-based and sequential, i.e. the first item is0
, second is1
, all the way up tocount($user_ids_array) - 1
. Try making that change and see if it fixes it, if not just update the question with the new details and I'm sure it'll be an easy one to work out