it-swarm.com.de

Wie kann ich ändern, ob ein Feld in einem Formular erforderlich ist?

Anwendungsfall: Ich habe ein Pflichtfeld für Benutzer hinzugefügt. Wenn Benutzer 1 (oder ein Administrator) einen Benutzer hinzufügt, sollte das Feld nicht erforderlich sein.

Code, der nicht funktioniert (in Drupal 8):

function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($form_id == 'user_register_form') {
    if (\Drupal::currentUser()->id() == 1) {
      $form['field_fieldname']['#required'] = FALSE; // No effect
      $form['field_fieldname']['widget']['#required'] = FALSE; 
    }
  }
}

Das Ändern des Widgets "funktioniert", aber die Validierung schlägt fehl. Die Lösung für Drupal 7 scheint nicht mehr verwendbar zu sein.

$form['field_fieldname'][<lang>][0]['value']['#required'] = FALSE;
3
hansfn

Es kann schwierig sein, das D8-Entitätsvalidierungsschema auf diese Weise zu umgehen. Warum setzen Sie diese Feldeinstellungen nicht einfach auf "nicht erforderlich" und setzen sie dann

$form['field_fieldname']['widget'][0]['#required'] = TRUE

wann

\Drupal::currentUser()->id() != 1
1