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.昇順で並び替える 関連モジュール タイトル
Commerce2 8.6.x Commerce Shipment Commerceで配送情報を得る方法
フォーム 8.6.x JavaScript 特定のformにJavaScriptを紐付ける方法
サイトの環境設定 8.6.x Simhony Yaml yamlファイルを読み込む方法
コンテンツの管理 8.5.x Field File コンテンツのフィールドの表示について
JavaScript 8.5.x PHP Commerce決済モジュール設定をJavaScriptにデータに渡す方法
Libraries 8.5.x Libraries Commerceで外部JavaScriptをテスト/本番で読み分ける方法
Viewsプログラミング 8.4x Views drupal8におけるViewsプログラミング
コンテンツの作成 8.4x node node保存前に色々やる方法
コンテンツの作成 8.4x json jQueryにjsonで渡す方法
video 8.4x video map 動画上にクリッカブルマップを作成する方法
コンテンツの作成 8.4x archiver zipファイル圧縮・解凍する方法
Views 8.4x hook_views_query_alter Viewsクエリの条件式にサブクエリを追加する方法
Initial 8.4x Subscriber hook_init() 〜 drupal_goto() を drupal8でやる方法
コンテンツの管理 8.4x Entity EntityをPropertyで探す(クエリする)方法
テーマ 8.4x hook_preprocess_html bodyタグにnode idやaliasのClassを追加する方法
コンテンツの作成 8.4x コンテンツ作成時のフォームレイアウトの変更
コンテンツの作成 8.4x PhpSpreadsheet Excelを読み書きする方法
Views 8.4x hook_views_query_alter Viewsクエリに多くの条件を追加する方法
Views Exposed Filter 8.4x hook_views_pre_view Views Exposed Formの複数単語入力(textfield)をフォーム上だけ複数行入力(textarea)にする方法
SFTP 8.4x SFTP RSA SFTP(RSA)でファイル転送(送信)する方法

ページ