Drupal 8 - Rediriger sur le listing des noeuds après la création d'un contenu

Posté le Lundi 29 juillet 2019 - 18:26

Sur une commande expresse de Vincent, voici comment modifier les formulaires de création / modification de nœud pour être redirigé sur la page de listing des nœuds plutôt que sur le nœud en lui même lors de la création ou de la modification d'un contenu.

1 - Altération du type d'entité

# mon_module.module
function mon_module_entity_type_alter(array &$entity_types) {
  $entity_types['node']->setFormClass('default', Drupal\mon_module\Entity\Form\CustomNodeForm::class);
  $entity_types['node']->setFormClass('edit', Drupal\mon_module\Entity\Form\CustomNodeForm::class);
}

2 - Classe du formulaire

# web/modules/mon_module/src/Entity/Form/CustomNodeForm.php
<?php

namespace Drupal\mon_module\Entity\Form;

use Drupal\Core\Form\FormStateInterface;
use Drupal\node\NodeForm;

class CustomNodeForm extends NodeForm {

  public function save(array $form, FormStateInterface $form_state) {
    parent::save($form, $form_state);
    $form_state->setRedirect('view.content.page_1');
  }

}

 

Aller plus loin ?

Commentaires

Bonjour,

Une autre astuce que je j'utilise beaucoup:

function __redirect_XXX(array &$form, FormStateInterface $form_state)
{
// ...
// Logique pour déterminer la valeur de $url.
// $url doit être un objet de type \Drupal\Core\Url
// ...
$form_state->setRedirectUrl($url);
}

XXX_preprocess_form_alter() {
$form['actions']['submit']['#submit'][] = '__redirect_XXX';
}

Du coup, je suis curieux de connaître la méthode la + optimale techniquement ?

A+

Une petite coquille s'est glissée dans mon précèdent commentaire:

XXX_preprocess_form_alter() {...

Comprendre:

XXX_preprocess_form_alter(&$form, FormStateInterface $form_state, $form_id){...

Ajouter un commentaire

Ne sera pas publié

Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...