it-swarm.com.de

form_state-> setRedirect (to_a_new_node_page) von der Funktion submitForm, Route "existiert nicht" Problem

Ich habe ein benutzerdefiniertes Modul erstellt. Es generiert ein benutzerdefiniertes Formular auf einer Seite. Wenn ich mein Formular abschicke, erstelle ich einen neuen Knoten. Ich werde also zur Formularseite umgeleitet, möchte aber zur neuen Knotenseite umleiten.

Ich füge diese Zeile am Ende meiner submitForm-Funktion hinzu:

$form_state->setRedirect('node/'.$mynewnode->id());

Aber wenn ich mein Formular von der Website abschicke, erhalte ich den leeren weißen Bildschirm des Todes. Mein Apache-Protokoll:

...
Uncaught PHP Exception Symfony\\Component\\Routing\\Exception\\RouteNotFoundException: "Route "node/153" does not exist.
...

Und wenn ich dann manuell zur Seite node/153 gehe, gibt es kein Problem. Die Seite funktioniert gut.

Meine Frage: Wo ist mein Fehler? Wie kann ich die Umleitung nach dem Erstellen des neuen Knotens festlegen? Ist es über die Funktion submitForm möglich?

6
matthieu lopez

Ich denke, wenn Sie die Funktion setRedirect verwenden möchten, sollten Sie sich die gefundene Dokumentation ansehen https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Form%21FormState. php/function/FormState% 3A% 3AsetRedirect/8

Sie können dann die ff basieren. Code von FormSubmitter :: redirectForm oder FormSubmitterInterface :: redirectForm . Ihr Code könnte also ungefähr so ​​aussehen:

$form_state->setRedirect('entity.node.canonical',
  array('node' => $mynewnode->id()),
));

Sie können auch herausfinden, woher "entity.node.canonical" stammt, indem Sie in core/modules/node suchen, wo es deklariert ist und worum es geht.

Hoffe alles läuft super!

7
Leolando Tan