バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Goosuke
投稿日時: 2021/6/11 11:44
対応状況: 解決済
半人前
登録日: 2021/6/9
居住地:
投稿: 11
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
ご回答ありがとうございます。
色々ありまして本体カスタマイズの方向になりました。
ご指導ありがとうございました。
468
投稿日時: 2021/6/11 11:16
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
>案件の要求が「本体カスタマイズは禁止」でしたので、今回はプラグインのみでの実現を目指しています。
>正直できるだけお手軽に実装したいと考えています。

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

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


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

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

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

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

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

テーブルに項目を追加する「だけ」のプラグインを作ろうかなとも思いましたが、依存関係とかの勉強も必要になってしまいますし・・・正直できるだけお手軽に実装したいと考えています。
468
投稿日時: 2021/6/10 8:51
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 独自プラグインの有効化タイミングにフックしてDBを直接操作したい
>実運用中に誤ってプラグインを削除する事もありえるでしょうし、その時過去データ全て削除されると困ります。
プラグインを削除したいと思って削除したのに
そのプラグインに関する情報が残ってしまう事の方が
プラグインという仕組みから考えると問題かと思います。

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

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


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

Goosuke
投稿日時: 2021/6/9 17:39
対応状況: −−−
半人前
登録日: 2021/6/9
居住地:
投稿: 11
独自プラグインの有効化タイミングにフックして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)
の所で何か追加?する事で、削除されないフィールドが作成できたりしないのでしょうか?
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,282名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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