validateFormValues example

/** * {@inheritdoc} */
  public function elementValidate($element, FormStateInterface $form_state$form) {
    $field_name = $element['#field_name'];
    $entity = $form_state->getFormObject()->getEntity();
    $input = $form_state->getUserInput();
    if (!empty($input['_triggering_element_name']) && str_contains($input['_triggering_element_name'], 'media-library-update')) {
      // This will validate a required field before an upload is completed.       $display = EntityFormDisplay::collectRenderDisplay($entity, 'edit');
      $display->extractFormValues($entity$form$form_state);
      $display->validateFormValues($entity$form$form_state);
    }
    $form_value = $form_state->getValue($field_name);
    if (!empty($form_value['media_library_selection'])) {
      $entity->set($field_name$form_value['media_library_selection']);
    }
  }

}

  protected function validateMediaEntity(MediaInterface $media, array $form, FormStateInterface $form_state$delta) {
    $form_display = EntityFormDisplay::collectRenderDisplay($media, 'media_library');
    $form_display->extractFormValues($media$form['media'][$delta]['fields']$form_state);
    $form_display->validateFormValues($media$form['media'][$delta]['fields']$form_state);
  }

  /** * {@inheritdoc} */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    foreach ($this->getAddedMediaItems($form_state) as $delta => $media) {
      EntityFormDisplay::collectRenderDisplay($media, 'media_library')
        ->extractFormValues($media$form['media'][$delta]['fields']$form_state);
      $this->prepareMediaEntityForSave($media);
      $media->save();
    }
return $form;
  }

  /** * {@inheritdoc} */
  public function validateForm(array &$form, FormStateInterface $form_state) {
    $entity_1 = $form_state->get('entity_1');
    /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display_1 */
    $form_display_1 = $form_state->get('form_display_1');
    $form_display_1->extractFormValues($entity_1$form$form_state);
    $form_display_1->validateFormValues($entity_1$form$form_state);

    $entity_2 = $form_state->get('entity_2');
    /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display_2 */
    $form_display_2 = $form_state->get('form_display_2');
    $extracted = $form_display_2->extractFormValues($entity_2$form['entity_2']$form_state);
    // Extract the values of fields that are not rendered through widgets, by     // simply copying from top-level form values. This leaves the fields that     // are not being edited within this form untouched.     // @see \Drupal\Tests\field\Functional\NestedFormTest::testNestedEntityFormEntityLevelValidation()     foreach ($form_state->getValues()['entity_2'] as $name => $values) {
      if ($entity_2->hasField($name) && !isset($extracted[$name])) {
        
/** * {@inheritdoc} */
  public function blockValidate($form, FormStateInterface $form_state) {
    $block_form = $form['block_form'];
    /** @var \Drupal\block_content\BlockContentInterface $block */
    $block = $block_form['#block'];
    $form_display = EntityFormDisplay::collectRenderDisplay($block, 'edit');
    $complete_form_state = $form_state instanceof SubformStateInterface ? $form_state->getCompleteFormState() : $form_state;
    $form_display->extractFormValues($block$block_form$complete_form_state);
    $form_display->validateFormValues($block$block_form$complete_form_state);
    // @todo Remove when https://www.drupal.org/project/drupal/issues/2948549 is closed.     $form_state->setTemporaryValue('block_form_parents', $block_form['#parents']);
  }

  /** * {@inheritdoc} */
  public function blockSubmit($form, FormStateInterface $form_state) {
    $this->configuration['view_mode'] = $form_state->getValue('view_mode');

    // @todo Remove when https://www.drupal.org/project/drupal/issues/2948549 is closed.
$form_state = new FormState();
    $display->buildForm($entity$form$form_state);

    // Pretend the form has been built.     $form_state->setFormObject(\Drupal::entityTypeManager()->getFormObject($entity_type, 'default'));
    \Drupal::formBuilder()->prepareForm('field_test_entity_form', $form$form_state);
    \Drupal::formBuilder()->processForm('field_test_entity_form', $form$form_state);

    // Validate the field constraint.     $form_state->getFormObject()->setEntity($entity)->setFormDisplay($display$form_state);
    $entity = $form_state->getFormObject()->buildEntity($form$form_state);
    $display->validateFormValues($entity$form$form_state);

    $errors = $form_state->getErrors();
    $this->assertEquals('Widget constraint has failed.', $errors['name'], 'Constraint violation at the field items list level is generated correctly');
    $this->assertEquals('Widget constraint has failed.', $errors['test_field'], 'Constraint violation at the field items list level is generated correctly for an advanced widget');
  }

  /** * Gets the form errors for a given entity. * * @param \Drupal\Core\Entity\EntityInterface $entity * The entity * @param array $hidden_fields * (optional) A list of hidden fields. * * @return array * The form errors. */
Home | Imprint | This part of the site doesn't use cookies.