バージョン選択

フォーラム

メニュー

オンライン状況

29 人のユーザが現在オンラインです。 (19 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 29
もっと...

サイト内検索

質問 > 管理機能 > 独自プラグインの有効化タイミングにフックしてDBを直接操作したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Goosuke
投稿日時: 2021/6/9 17:39
対応状況: −−−
新米
登録日: 2021/6/9
居住地:
投稿: 3
独自プラグインの有効化タイミングにフックしてDBを直接操作したい
▼テンプレート
[EC-CUBE] 4.0.5 新規インストール
[レンタルサーバ] xampp
[OS] windwos10
[PHP] 7.4.19
[データベース] 10.4.19-MariaDB
[WEBサーバ] xampp
[ブラウザ] chorome(最新)
[導入プラグインの有無] 独自プラグイン(受注データに)
[カスタマイズの有無] 無し

EC-CUBE/Symfonyとも、さわり始めてまだ数日の者です。
dtb_order/dtb_order_item に、独自の項目を追加するプラグインを作成したいと考えています。


Entityで項目追加はでき、プラグインインストールと同時に項目は生成されていますが、プラグインを削除すると、Entityで追加したフィールドは、過去のデータもろともテーブルから削除されてしまいます。
実運用中に誤ってプラグインを削除する事もありえるでしょうし、その時過去データ全て削除されると困ります。

そこで、以下のような処理を実現したいと考えています。

1.
プラグインの有効化処理にフックする

2.
dtb_order/dtb_order_item に、所定の名前・型のフィールドが存在していなければ直SQLで追加する。(SQLは分かります)

3.
2で問題が無い場合はプラグイン初期化処理を正常終了する。
問題があった場合は、メッセージを出してプラグインの有効化は行わない。

色々ググってみましたが、

1.プラグイン有効化フック処理の書き方が分からない。
3.有効化処理をエラー終了させる方法が分からない。

という状況です。
どうぞご指導ください!

尚、追加する項目は、EC-CUBE本体の受注処理とは連携しません。


【追記】
質問した後で思ったのですが、
@ORM\Column(name="hogehoge", type="datetimetz", nullable = true)
の所で何か追加?する事で、削除されないフィールドが作成できたりしないのでしょうか?
468
投稿日時: 2021/6/10 8:51
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2999
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
>実運用中に誤ってプラグインを削除する事もありえるでしょうし、その時過去データ全て削除されると困ります。
プラグインを削除したいと思って削除したのに
そのプラグインに関する情報が残ってしまう事の方が
プラグインという仕組みから考えると問題かと思います。

>1.プラグイン有効化フック処理の書き方が分からない。
>3.有効化処理をエラー終了させる方法が分からない。
この辺りはプラグインに与えられた機能を越えたレベルの処理かと思いますので
プラグインで制御する事はできないのではないかと思います。

誤って削除しないように運用では無効化を利用する形が良いのではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

Goosuke
投稿日時: 2021/6/10 9:28
対応状況: −−−
新米
登録日: 2021/6/9
居住地:
投稿: 3
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
回答ありがとうございます。

案件の要求が「本体カスタマイズは禁止」でしたので、今回はプラグインのみでの実現を目指しています。
プラグインに関する情報がDBに残ってしまうのは折り込み済みです。

プラグインで plg_ から始まる独自テーブルを作成しても良いのですが、受注IDに紐付く1項目のみを追加したいだけですので、わざわざ別テーブルにしてJOIN系のSQLを実装するのもどうかと思いますし、その追加テーブルもプラグインを削除するとBANされるでしょうし。

>誤って削除しないように運用では無効化を利用する形が良いのではないでしょうか?
最終手段としては、プラグイン一覧画面の×マーク(削除アイコン)をCSSで非表示にする等も考えてはいますが・・・

テーブルに項目を追加する「だけ」のプラグインを作ろうかなとも思いましたが、依存関係とかの勉強も必要になってしまいますし・・・正直できるだけお手軽に実装したいと考えています。
468
投稿日時: 2021/6/11 11:16
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2999
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
>案件の要求が「本体カスタマイズは禁止」でしたので、今回はプラグインのみでの実現を目指しています。
>正直できるだけお手軽に実装したいと考えています。

という事であれば、尚更、プラグインに対する挙動の変更は実現できないと思います。

どのような形態でサイトを構築されているのか分かりませんが
プラグインの削除の禁止については権限管理の拒否URLでプラグイン周りの操作が行えないようにしておくほうが良いのではないでしょうか?
サイト構築後、保守を継続的に行うのであれば、全ての操作を行える保守用のアカウントを作って、運用上分けて管理する等の形が良いのではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

Goosuke
投稿日時: 2021/6/11 11:44
対応状況: 解決済
新米
登録日: 2021/6/9
居住地:
投稿: 3
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
ご回答ありがとうございます。
色々ありまして本体カスタマイズの方向になりました。
ご指導ありがとうございました。
golfgalaxy
投稿日時: 2021/6/18 18:44
対応状況: −−−
新米
登録日: 2021/6/18
居住地:
投稿: 2
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
Nice post. We provide cheap golf product. On some golf products have discounts offer. These golf products are light in weight. If you buy two golf products you will get one product free . Quality of these products are good. Design of these golf products are good. Here you will find all sizes of golf product . For more information you can visit on our website click here https://golfgalaxyclub.com
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は71,659名です
総投稿数は101,392件です

投稿数ランキング

1
seasoft
7333
2
468
2999
3
AMUAMU
2712
4
nanasess
2147
5
umebius
2006
6
yuh
1612
7
red
1450
8
h_tanaka
1080
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.