web-dev-qa-db-ja.com

submitForm関数からのform_state-> setRedirect(to_a_new_node_page)、ルート「存在しない」問題

カスタムモジュールを作成しました。ページにカスタムフォームを生成します。フォームを送信すると、新しいノードが作成されます。それで、フォームページにリダイレクトしていますが、新しいノードページにリダイレクトしたいと思います。

このフォームをsubmitForm関数の最後に追加します。

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

しかし、Webサイトからフォームを送信すると、真っ白な死の画面が表示されます。私のApacheログ:

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

その後、手動でnode/153ページに移動しても問題はありません。ページはうまく機能します。

私の質問:私の間違いはどこにありますか?新しいノードの作成後にリダイレクトを設定するにはどうすればよいですか? submitForm関数から可能ですか?

6
matthieu lopez

SetRedirect関数を使用する場合は、見つかったそのドキュメントを確認することをお勧めします https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Form%21FormState。 php/function/FormState%3A%3AsetRedirect/8

その後、ffをベースにすることができます。 FormSubmitter :: redirectForm または FormSubmitterInterface :: redirectForm からのコード。したがって、コードは次のようになります。

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

また、core/modules/nodeを検索することで、 "entity.node.canonical"がどこにあるのか、どこで宣言されているのか、何が何であるのかを知ることもできます。

すべてがうまくいくことを願っています!

7
Leolando Tan