In my Content type, I add a field Reference: User with unlimited values, Reference method from a view of user managers, and widget checkboxes.
Basically when a user manager edit the node, he can only check the box with his own name. The other checkboxes are set to disabled. The node will be published if all managers check the box.
I’ve tried creating form_alter function like below
function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id === 'node_request_order_edit_form') {
$field_approved_by = $form['field_approved_by']['widget']['#options'];
foreach($field_approved_by as $key=>$val) {
if($key != Drupal::currentUser()->id()) {
$form['field_approved_by']['widget']['#options'][$key]['#disabled'] = true;
}
}
}
}
But I got error
Error: Cannot use object of type DrupalCoreFieldFieldFilteredMarkup as array...
If I remove the checkboxes using unset,
...
if($key != Drupal::currentUser()->id()) {
unset($form['field_approved_by']['widget']['#options'][$key]);
}
...
The value get overwritten when different manager checks the box and save the node.
Thanks for any help.