/**
  * {@inheritdoc}
  */
 public function validateForm($form_id, &$form, FormStateInterface &$form_state)
 {
     // If this form is flagged to always validate, ensure that previous runs of
     // validation are ignored.
     if ($form_state->isValidationEnforced()) {
         $form_state->setValidationComplete(FALSE);
     }
     // If this form has completed validation, do not validate again.
     if ($form_state->isValidationComplete()) {
         return;
     }
     // If the session token was set by self::prepareForm(), ensure that it
     // matches the current user's session.
     if (isset($form['#token'])) {
         if (!$this->csrfToken->validate($form_state->getValue('form_token'), $form['#token'])) {
             $url = $this->requestStack->getCurrentRequest()->getRequestUri();
             // Setting this error will cause the form to fail validation.
             $form_state->setErrorByName('form_token', $this->t('The form has become outdated. Copy any unsaved work in the form below and then <a href="@link">reload this page</a>.', array('@link' => $url)));
             // Stop here and don't run any further validation handlers, because they
             // could invoke non-safe operations which opens the door for CSRF
             // vulnerabilities.
             $this->finalizeValidation($form, $form_state, $form_id);
             return;
         }
     }
     // Recursively validate each form element.
     $this->doValidateForm($form, $form_state, $form_id);
     $this->finalizeValidation($form, $form_state, $form_id);
     $this->handleErrorsWithLimitedValidation($form, $form_state, $form_id);
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function isValidationComplete()
 {
     return $this->mainFormState->isValidationComplete();
 }
Example #3
0
 /**
  * {@inheritdoc}
  */
 public function validateForm($form_id, &$form, FormStateInterface &$form_state)
 {
     // If this form is flagged to always validate, ensure that previous runs of
     // validation are ignored.
     if ($form_state->isValidationEnforced()) {
         $form_state->setValidationComplete(FALSE);
     }
     // If this form has completed validation, do not validate again.
     if ($form_state->isValidationComplete()) {
         return;
     }
     // If the session token was set by self::prepareForm(), ensure that it
     // matches the current user's session. This is duplicate to code in
     // FormBuilder::doBuildForm() but left to protect any custom form handling
     // code.
     if (isset($form['#token'])) {
         if (!$this->csrfToken->validate($form_state->getValue('form_token'), $form['#token']) || $form_state->hasInvalidToken()) {
             $this->setInvalidTokenError($form_state);
             // Stop here and don't run any further validation handlers, because they
             // could invoke non-safe operations which opens the door for CSRF
             // vulnerabilities.
             $this->finalizeValidation($form, $form_state, $form_id);
             return;
         }
     }
     // Recursively validate each form element.
     $this->doValidateForm($form, $form_state, $form_id);
     $this->finalizeValidation($form, $form_state, $form_id);
     $this->handleErrorsWithLimitedValidation($form, $form_state, $form_id);
 }
Example #4
0
 /**
  * {@inheritdoc}
  */
 public function massageFormValues(array $values, array $form, FormStateInterface $form_state)
 {
     // Don't do entity saving when we have validation erors.
     if (count($form_state->getErrors()) || !$form_state->isValidationComplete()) {
         return $values;
     }
     $field_name = $this->fieldDefinition->getName();
     $widget_state = static::getWidgetState($form['#parents'], $field_name, $form_state);
     $element = NestedArray::getValue($form_state->getCompleteForm(), $widget_state['array_parents']);
     foreach ($values as $delta => &$item) {
         if (isset($widget_state['paragraphs'][$item['_original_delta']]['entity']) && $widget_state['paragraphs'][$item['_original_delta']]['mode'] != 'remove') {
             $paragraphs_entity = $widget_state['paragraphs'][$item['_original_delta']]['entity'];
             /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $display */
             $display = $widget_state['paragraphs'][$item['_original_delta']]['display'];
             $display->extractFormValues($paragraphs_entity, $element[$item['_original_delta']]['subform'], $form_state);
             $display->validateFormValues($paragraphs_entity, $element[$item['_original_delta']]['subform'], $form_state);
             $paragraphs_entity->setNewRevision(TRUE);
             $paragraphs_entity->save();
             $item['target_id'] = $paragraphs_entity->id();
             $item['target_revision_id'] = $paragraphs_entity->getRevisionId();
         } elseif ($widget_state['paragraphs'][$item['_original_delta']]['mode'] == 'remove' || $widget_state['paragraphs'][$item['_original_delta']]['mode'] == 'removed') {
             $item['target_id'] = NULL;
             $item['target_revision_id'] = NULL;
         }
     }
     return $values;
 }
 /**
  * {@inheritdoc}
  */
 public function massageFormValues(array $values, array $form, FormStateInterface $form_state)
 {
     // Don't do entity saving when we have validation erors.
     if (count($form_state->getErrors()) || !$form_state->isValidationComplete()) {
         return parent::massageFormValues($values, $form, $form_state);
     }
     foreach ($values as $value) {
         if (isset($value['fids'][0]) && isset($value['cropinfo']) && $value['cropinfo']['changed']) {
             $fid = $value['fids'][0];
             $new_crop_info = array('fid' => $fid, 'x' => $value['cropinfo']['x'], 'y' => $value['cropinfo']['y'], 'width' => $value['cropinfo']['width'], 'height' => $value['cropinfo']['height']);
             imagefield_crop_update_file_info($new_crop_info);
             $source = File::load($fid);
             if ($source) {
                 image_path_flush($source->getFileUri());
             }
         }
     }
     return parent::massageFormValues($values, $form, $form_state);
 }
 /**
  * {@inheritdoc}
  */
 public function isValidationComplete()
 {
     return $this->decoratedFormState->isValidationComplete();
 }
 /**
  * @covers ::isValidationComplete
  *
  * @dataProvider providerSingleBooleanArgument
  *
  * @param bool $complete
  */
 public function testIsValidationComplete($complete)
 {
     $this->decoratedFormState->isValidationComplete()->willReturn($complete)->shouldBeCalled();
     $this->assertSame($complete, $this->formStateDecoratorBase->isValidationComplete());
 }