hook_init() 〜 drupal_goto() を drupal8でやる方法

カテゴリ Initial コアバージョン 8.4x 関連モジュール Subscriber

modules/custom/your_module/your_module.services.yml

services:
  your_module.event_subscriber:
    class: Drupal\your_module\EventSubscriber\YourModuleSubscriber
    tags:
      - {name: event_subscriber}

modules/custom/your_module/src/EventSubscriber/Your_moduleSubscriber.php

<?php

namespace Drupal\your_module\EventSubscriber;

use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class YourModuleSubscriber implements EventSubscriberInterface {

  public function checkForRedirection(GetResponseEvent $event) {
    // 参考)一部の例外を除いて匿名ユーザーはloginページに飛ばす
    if (\Drupal::currentUser()->isAnonymous()) {
      if (!preg_match('!^(/user/|/sended-onetime-link-mail)!', $_SERVER['REQUEST_URI'])) {
        $path = \Drupal\Core\Url::fromUserInput('/user/login');
        $response = new RedirectResponse($path->toString());
        $response->send();
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events[KernelEvents::REQUEST][] = array('checkForRedirection');
    return $events;
  }

}

コメント

ユーザー actbrain の写真

動的キャッシュ再生成時に来させたい場合は 優先度 > 27 にする。

    $events[KernelEvents::REQUEST][] = ['checkForRedirection', 30];

何が何でも毎回来させたい場合は 優先度 > 200 にする。

    $events[KernelEvents::REQUEST][] = ['checkForRedirection', 280];

ページ

OTHER FAQ

Drupal開発・運用の疑問/質問の答えはここに

無料ユーザー登録すると質問できます。

カテゴリ Core Ver. 関連モジュール降順で並び替える タイトル
サイト情報 8.4x JavaScript JavaScriptに変数を渡す方法
フォーム 8.6.x JavaScript 特定のformにJavaScriptを紐付ける方法
フォーム 8.6.x JavaScript 特定のformに動的にJavaScriptをロードする方法
見栄え 7.15 js Injector 簡単にJavascriptを追加する方法は?
コンテンツの作成 8.4x json jQueryにjsonで渡す方法
言語 7.15 Language まだ翻訳されていない英語文、どうにかならない?
Libraries 8.5.x Libraries Commerceで外部JavaScriptをテスト/本番で読み分ける方法
PhpStorm 7.50 LocalForward PhpStormから踏み台を使う
排他 7.26 lock Viewsモジュールの設定ページのような排他機能
mac linux ファイル名 文字化け 8.7.x mac linux ファイル名 文字化け Macからlinuxにrsyncするとファイル名(濁点)が文字化けする場合の対応方法
開発 mail 7.50 Mail Safety 開発/テスト用サイトのメール
コンテンツの作成 7.15 Mailhandler メールを通じてnodeの投稿をするには
コンテンツの作成 7.23 maxlength テキストフィールドの最大長のチェック&カウントダウン
アップデート 8.7.2 menu drupal-core 8.7.2にupdateしたところ
サイトの構築 7.50 Module Missing Message Fixer モジュールをアンインストールしたらエラーがでるようになった
リバースプロキシ 8.9.x mod_proxy mod_proxy_http mod_ssl Apache2.4 から httpsサーバーへリバースプロキシする方法
コンテンツの作成 8.4x node 新規ノードを作成する
コンテンツの作成 8.4x node node保存前に色々やる方法
コンテンツの作成 7.38 node 代理投稿を可能にしたい
コンテンツの作成 8.9.x node ノード保存時の前回値の参照方法

ページ