Ce que j'essaie de faire ne fonctionne pas, je suis toujours redirigé vers / node / {id}:
function hook_form_alter(&$form, $form_state, $form_id) {
$form['actions']['submit']['#submit'][] = 'callback_set_redirect';
}
function callback_set_redirect($form, FormStateInterface $form_state) {
$form_state->setRedirect('custom.landing.page');
}
8
redirection
olsav
la source
la source
If saving is an option, privileged users get dedicated form submit buttons to adjust the publishing status while saving in one go. @todo This adjustment makes it close to impossible for contributed modules to integrate with "the Save operation" of this form. Modules need a way to plug themselves into 1) the ::submit() step, and 2) the ::save() step, both decoupled from the pressed form button.
Réponses:
Fondamentalement, le code fonctionnera uniquement pour soumettre une action, mais le formulaire de sauvegarde de nœud Drupal a de nombreuses actions, je pense que vous vous seriez connecté en tant qu'administrateur et que vous l'auriez essayé, puis suivez le code ci-dessous.
si vous voulez que cela fonctionne aussi pour d'autres actions, cela signifie que vous vous connectez en tant qu'administrateur et que vous voyez le bouton d'enregistrement du nœud, vous aurez l'option de sélection "enregistrer et publier", "enregistrer et annuler la publication". comme mentionné
la source
En utilisant hook_form_alter, vous devrez faire deux choses
1) assurez-vous qu'il s'agit d'un nœud. 2) ajoutez un gestionnaire d'envoi personnalisé à chaque bouton d'envoi.
Ensuite, pour la fonction de soumission, vous pouvez utiliser la logique de votre choix. Vous pouvez comparer avec NodeForm :: save, où il vous envoie soit à la page de noeud canonique ou à la page d'accueil en fonction des autorisations d'accès de l'utilisateur actuel.
Si vous souhaitez modifier ce comportement afin qu'il reste sur la forme de nœud actuelle, vous pouvez le faire:
Si vous souhaitez utiliser votre page de destination personnalisée, il vous suffit de remplacer la redirection par le code que vous utilisez déjà:
Notez que cela ne remplacera pas lorsqu'il y a un paramètre "destination" $ _GET, comme sur la page / admin / content.
Pour supprimer le paramètre de destination de la page / admin / content, vous voudrez décocher la case "destination" sous "Contenu: Liens d'opérations (Opérations)" dans les champs de cette vue.
la source
J'ai réussi à utiliser Symfony RedirectResponse:
la source
Je ne trouve rien de mal avec le code d'origine, donc quelque chose d'autre ne va probablement pas. Ça fonctionne bien pour moi.
Cependant,
custom.landing.page
doit être une route définie et les paramètres (s'il y en a) doivent être passés comme suit:Voir FormState :: setRedirect () pour plus de détails.
la source
J'utilise toujours le module Node Save Redirect pour cette fonctionnalité. Il ajoute une option à un type de contenu qui dit "que faire après avoir enregistré un nouveau contenu".
la source