You are here

public function FormManglerService::redirectToEntityEditForm in Rabbit Hole 8

Same name and namespace in other branches
  1. 2.x src/FormManglerService.php \Drupal\rabbit_hole\FormManglerService::redirectToEntityEditForm()

Redirects back to entity edit form to prevent hitting error page.

Parameters

array $form: The form.

\Drupal\Core\Form\FormStateInterface $form_state: The form state.

File

src/FormManglerService.php, line 413

Class

FormManglerService
Provides necessary form alterations.

Namespace

Drupal\rabbit_hole

Code

public function redirectToEntityEditForm(array $form, FormStateInterface $form_state) {
  $entity = $form_state
    ->getFormObject()
    ->getEntity();
  $plugin = $this->behaviorInvoker
    ->getBehaviorPlugin($entity);

  // Set form redirect to entity edit page to prevent 403/404 errors if
  // Rabbit Hole is enabled and the user doesn't have the bypass access.
  if ($plugin !== NULL && !$plugin instanceof DisplayPage) {
    $redirect = $form_state
      ->getRedirect();

    // Change redirect URL only if current one is set to canonical page.
    if ($redirect instanceof Url && $redirect
      ->toString() === $entity
      ->toUrl()
      ->toString()) {
      $form_state
        ->setRedirectUrl($entity
        ->toUrl('edit-form'));
    }
  }
}