以下のようにEventを作成することで会員登録時にポイントを付与するカスタマイズが可能です。
作成するファイル
app/Customize/EventListener/EntryEvent.php
app/Customize/EventListener/EntryEvent.php
<?php
namespace Customize\EventListener;
use Doctrine\ORM\EntityManagerInterface;
use Eccube\Entity\Customer;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class EntryEvent implements EventSubscriberInterface
{
/**
* @var EntityManagerInterface
*/
private $entityManager;
/**
* EntryListener constructor.
* @param EntityManagerInterface $entityManager
*/
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function onFrontEntryIndexComplete(EventArgs $eventArgs)
{
/** @var Customer $Customer */
$Customer = $eventArgs->getArgument('Customer');
// ポイントをセット
$Customer->setPoint(100);
// データベースに永続化
$this->entityManager->persist($Customer);
$this->entityManager->flush();
}
public static function getSubscribedEvents()
{
return [
EccubeEvents::FRONT_ENTRY_INDEX_COMPLETE => 'onFrontEntryIndexComplete',
];
}
}