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é

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

2 - Classe du formulaire

  1. # web/modules/mon_module/src/Entity/Form/CustomNodeForm.php
  2. <?php
  3.  
  4. namespace Drupal\mon_module\Entity\Form;
  5.  
  6. use Drupal\Core\Form\FormStateInterface;
  7. use Drupal\node\NodeForm;
  8.  
  9. class CustomNodeForm extends NodeForm {
  10.  
  11. public function save(array $form, FormStateInterface $form_state) {
  12. parent::save($form, $form_state);
  13. $form_state->setRedirect('view.content.page_1');
  14. }
  15.  
  16. }

 

 

Commentaires

Posté le Lundi 12 août 2019 - 12:17

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+

Posté le Lundi 12 août 2019 - 12:18

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é

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...