【EC-CUBE4】商品を一個しか購入できないプラグインを作る方法

EC-CUBE4で商品を一個しか購入できないプラグインを作る方法です。

EC-CUBE4にバンドルされている「PurchaseFlowにProcessorを追加するサンプル」をベースに開発してみます。

まず最初にコマンドでプラグインの雛形を生成します。

上記コマンドを実行するとプラグインジェネレータのウィザードが開始されますので任意のテキストを入力してください。

今回は以下のように入力しました。

入力が完了したらPluginディレクトリ内にSaleLimitOneディレクトリが自動で生成されます。

商品規格テーブルに商品を一個しか購入できないフラグを追加

商品規格テーブル(dtb_product_class)に商品を一個しか購入できないフラグフィールドを追加するため、ProductClass Entityをtraitと@EntityExtension アノテーションを使って拡張します。

ProductClassTraitを作成してEntityディレクトリに配置してください。

サンプルコードは以下のとおりです。

EC-CUBE4のドキュメントにもEntityの拡張方法が掲載されています。

今回はフラグフィールドなのでtypeにbooleanを指定しています。

フォームに商品を一個しか購入できないフラグ項目を追加

一個しか購入できないフラグフィールドを追加したので、次はフォームに一個しか購入できないフラグ項目を追加します。

先程作成したProductClassTraitのsale_limit_oneフィールドに@FormAppend アノテーションを追加します。

@FormAppend アノテーションを追加することでニックネーム項目が自動で生成されます。

@FormAppend アノテーションのtypeでToggleSwitchTypeを指定すると有効・無効の切り替えボタンが生成されます。

@FormAppend アノテーションのoptionsはlabelなどのオプションが指定できます。

詳しくはEC-CUBE4ドキュメントの「Entity からフォームを自動生成する」をご確認ください。

これで管理画面の商品登録ページに商品を一個しか購入できないフラグ項目が追加され、フラグがデータベースに登録できるようになりました。

PurchaseFlowを使ってカートに入れたときの商品数量チェック

PurchaseFlowを使うと簡単にカートに入れたときの商品数量をチェックできます。

EC-CUBE4にバンドルされている「PurchaseFlowにProcessorを追加するサンプル」をベースにして、商品を一個しか購入できないフラグが有効化された商品の場合、商品数量チェックするようにします。

以下のサンプルコードを「Service/PurchaseFlow/Processor」ディレクトリ内に配置して下さい。ファイル名は「SaleLimitOneValidator.php」として下さい。

@CartFlow アノテーションを追加すると、カートのPurchaseFlowにProcessorを追加されカートに商品を入れたときのチェックが行えるようになります。

以上でプラグインは完成です。

動作確認のためコマンドでプラグインをインストールして有効化します。

プラグインのインストールと有効化

プラグインはコマンドでインストールと有効化が出来ます。

プラグインのインストール方法は以下のとおりです。

プラグインの有効化の方法は以下のとおりです。

プラグインを有効化すると、管理画面の「商品登録ページ」に商品を一個しか購入できないフラグ項目が追加されます。

商品を一個しか購入できないフラグを有効にして保存すると、フラグを有効化した商品は数量2個以上でカートに入れるとエラメッセージが表示され、カートには商品が1個しか追加されなくなります。

コメントを残す

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