【EC-CUBE4】ゲスト購入を無効化する方法

EC-CUBE4でゲスト購入を無効化する方法です。

<?php

namespace Customize\EventSubscriber;

use Eccube\Controller\NonMemberShoppingController;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\Routing\RouterInterface;

/**
 * ゲスト購入ページにアクセスしたら会員登録ページへリダイレクト
 *
 * Class NonMemberSubscriber
 * @package Customize\EventSubscriber
 */
class NonMemberSubscriber implements EventSubscriberInterface
{
    /**
     * @var RouterInterface
     */
    private $router;

    public function __construct(
        RouterInterface $router
    ) {
        $this->router = $router;
    }

    public function onKernelController(FilterControllerEvent $event)
    {
        $controllers = $event->getController();
        if(!is_array($controllers)) {
            return;
        }

        foreach($controllers as $controller) {
            if($controller instanceof NonMemberShoppingController) {
                $event->setController(function(){
                    return new RedirectResponse($this->router->generate("entry"));
                });
                break;
            }
        }
    }

    public static function getSubscribedEvents()
    {
        return [
            'kernel.controller' => 'onKernelController',
        ];
    }
}

 

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください