web-dev-qa-db-ja.com

entity.user.canonical(/ user / {uid})ルートを変更する

ユーザー(例、nid = 37)が/user/1、/user/2、...、/user/nのようなURLで他のユーザーのプロファイルページにアクセスしたとき、自動的に自分のユーザーにリダイレクトします:/ user/37ページ。

Drupal 8でこれを正しく行うにはどうすればよいですか?

カスタムコントローラークラスを作成し、カスタムコントローラーを追加するデフォルトのdrupalルート(/ user/{uid})を構成する必要があると思いますが、これを行う方法がわかりません。

1
matthieu lopez

達成しようとしていることを実行するには、少なくとも2つの方法があります。

  1. RouteSubscriberを使用してルートを変更 できます。
  2. イベントをリッスン (おそらくKernelEvents :: REQUEST)、適切に応答します。

RouteSubscriberはおそらく少し難しいですが(まだ書いていないので、先日、その存在を発見しました)、古いhook_menu_alter以前のバージョンのDrupalのパターン。

イベントシステムを理解すれば、EventSubscriberの記述はおそらく簡単になります(これにはある程度の学習が必要ですが、Drupal internalsの未来に向かっています)。

3
acrosman