この記事は3分30秒で読めます。
みなさん、こんにちは。
ECCUBERの中野です。
▼EC-CUBERは、総合的なECソリューションをご提供するEC-CUBEのプロフェッショナル集団です!
https://ec-cuber.jp/service/
▼関連:EC-CUBEとは?
https://ec-cuber.jp/about/
今回は、EC-CUBE4系のバッチ処理について簡単ではありますがご紹介します。
主に、Cronを用いて定期実行させる処理になりますが、簡単に実装することができます。
▼関連:EC-CUBE4系のご紹介
https://ec-cuber.jp/eccube4/
詳細は、ご確認しやすいように資料にもおまとめしてます。無料DL可能ですので、ご興味があればどうぞ。
https://ec-cuber.jp/eccube4-download/
基となるフレームワークの「Symfony」の「Command」クラスを継承したクラスで作成します。
ディレクトリ構成
カスタマイズの場合
app/Customizeの直下に「Command」ディレクトリを作成
ディレクトリパス
app/Customize/Command
プラグインの場合
直下に「Command」ディレクトリを作成
ディレクトリパス
Command
ソースコード例
<?php namespace Eccube\Command; use Eccube\Service\Composer\ComposerApiService; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class InvalidateExpiredPointsCommand extends Command { protected static $defaultName = 'exp:point:invalidate'; /** * @var ComposerApiService */ private $composerService; public function __construct(ComposerApiService $composerService) { parent::__construct(); $this->composerService = $composerService; } protected function configure() { $this->setDescription('有効期限切れポイント失効処理 --notifyオプション付与時は失効前通知を行う') ->addOption('force', null, InputOption::VALUE_NONE, '有効期限切れポイントの無効化を実行') ->addOption('notify', null, InputOption::VALUE_NONE, '有効期限直前のポイントを顧客へメール通知'); } protected function execute(InputInterface $input, OutputInterface $output) { $force = true === $input->getOption('force'); $notify = true === $input->getOption('notify'); if (!$notify && !$force) { $output->write('--force --notifyオプションのどちらかを指定してください'); } /* 以下略 */ } }
実行方法
「protected static $defaultName」で設定した値を使用します。
php EC-CUBE4インストールディレクトリ/bin/console exp:point:invalidate
Cron等で実行する際も同様の指定でOKです。
今回は、必要部分のみのを紹介しましたが
EC-CUBE標準で用意されているものは、以下の場所に格納されています。
src/Eccube/Command
色々と参考にできるものがありますので、開発する際は見てみるといいことがあるかもです。
EC-CUBEのことなら、弊社に何でもご相談・お任せください!
▼問合せフォームから相談してみる。
https://ec-cuber.jp/contact-us/
▼電話で相談してみる。
03-6386-3652