バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > Repositoryへの独自関数追加方法が分かりません(プラグイン)

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Goosuke
投稿日時: 2021/11/5 11:40
対応状況: −−−
半人前
登録日: 2021/6/9
居住地:
投稿: 11
Repositoryへの独自関数追加方法が分かりません(プラグイン)
[EC-CUBE] 4.0.5-p1
[レンタルサーバ] ローカルxampp
[OS] Windows10
[PHP] 7.4.19
[データベース] MySQL 10.4.19-MariaDB
[WEBサーバ] Apache/2.4.47 (Win64) OpenSSL/1.1.1k PHP/7.4.19
[ブラウザ] Chorome
[導入プラグインの有無] 無し
[カスタマイズの有無] 無し

dtb_order_itemを拡張して独自データを利用するプラグインを作成しています。具体的には、出荷csv出力を行った時、csv出力したOrderItemに、その日時を記録する等の処理を追加するプラグインを作成しています。

下記、①②まで記述済みで、twigから
{% set csvlist = repository('Eccube\\Entity\\OrderItem').ccGetHtml_CsvExportHistory() %}
で、htmlブロックを取得したいのですが全く機能しません。


①Plugin\Entity\OrderItemTrait.php
プラグイン有効化で、dtb_order_itemに目的のフィールドは追加されます。

②Plugin\Repository\OrderItemRepository.php
------------------------------------------------------------
namespace Plugin\xxxx\Repository;
use Eccube\Repository\OrderItemRepository as BaseOrderItemRepository;



class OrderItemRepository extends BaseOrderItemRepository
{
/**
* @param array $param
* @return string
*/
public function ccGetHtml_CsvExportHistory( array $param = null ): string
{
return '<p>TEST</p>';
}
}
------------------------------------------------------------

現状、実行時に、
------------------------------------------------------------
An exception has been thrown during the rendering of a template ("Undefined method 'ccGetHtml_CsvExportHistory'. The method name must start with either findBy, findOneBy or countBy!").
------------------------------------------------------------
とエラーが出ます。

①②以外に何か記述が必要でしょうか?
yamlとか?
468
投稿日時: 2021/11/6 8:07
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: Repositoryへの独自関数追加方法が分かりません(プラグイン)
試した事がないので確証はないのですが、既存のRepositoryクラスにプラグインからメソッドを追加する事はできないのではないでしょうか?

>出荷csv出力を行った時、csv出力したOrderItemに、その日時を記録する等の処理を追加するプラグインを作成しています。

CSV出力時にEccubeEvents::ADMIN_ORDER_CSV_EXPORT_ORDERというフックポイントが存在していますので
そのフックポイントを使う形が良いのではないかと思うのですがいかがでしょうか?
twigだと正確なCSV出力時のタイミングは判定できないのではないかと思いました。


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

Goosuke
投稿日時: 2021/11/6 8:36
対応状況: −−−
半人前
登録日: 2021/6/9
居住地:
投稿: 11
Re: Repositoryへの独自関数追加方法が分かりません(プラグイン)
ご回答ありがとうございます。
csv出力時にdtb_order_itemに日時を追加する処理・タイミングは、なんとかなりそうなのですが、今回教えていただきたいのは、csv出力時に日時を追加した後、後日、「何月何日の何時何分何秒に何件csv出力したのか」という集計を取得したいのです。
その集計結果を表示するtwigから、htmlブロックを生成する独自関数を呼び出したい、その関数をリポジトリに追加したい(メソッドとして)、という事なのです。

そもそも「リポジトリのメンバとする」というアプローチが誤ってますでしょうか?

twigで再利用できる「DBを集計した結果のhtmlブロック」を作成したいという場合、リポジトリのメンバとする以外に、もっと適切な方法があるんでしょうか?

この辺りの参考となるネット記事も、「カスタマイズ」なら、少数ですがあるようですが、「プラグイン」となると、全く見つけられません。
Goosuke
投稿日時: 2021/11/6 8:53
対応状況: −−−
半人前
登録日: 2021/6/9
居住地:
投稿: 11
Re: Repositoryへの独自関数追加方法が分かりません(プラグイン)
「service」の作り方が全く分かっていないのですが、こういった処理は、serviceで実装するのが正解だったり?でしょうか?
468
投稿日時: 2021/11/8 10:52
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: Repositoryへの独自関数追加方法が分かりません(プラグイン)
>twigで再利用できる「DBを集計した結果のhtmlブロック」を作成したいという場合、リポジトリのメンバとする以外に、もっと適切な方法があるんでしょうか?
データを取り出す処理については、リポジトリにメソッドを持たせる形が適切かと思います。

リポジトリを拡張する方法に以下のような手順があるようです。

https://takelg.com/ec-cube4_customize_repository/

過去の投稿にプラグインでリポジトリを拡張したい。という旨の投稿がありましたので
参考になるかもしれません。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=26004&forum=10&move=prev&topic_time=1626761334


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

Goosuke
投稿日時: 2021/11/8 15:16
対応状況: −−−
半人前
登録日: 2021/6/9
居住地:
投稿: 11
Re: Repositoryへの独自関数追加方法が分かりません(プラグイン)
ありがとうございました!うまく行きました!

https://takelg.com/ec-cube4_customize_repository/
につきましては、以前試してみましたが、プラグイン有効化時に、良く分からないエラー(控えていません)が出て、有効化できなかったのですが、その時のコード(services.yaml)に、エラー時に記述していなかった「autowire: true」を追加すると、スルッとインストールでき、メソッドもちゃんと呼ばれています!
この辺りの仕組みに関するドキュメントなどは整備されていないのでしょうかね?


しかし、、トホホな事に、追加したメソッドでは、
@return string
としておりますが、htmlタグが(しっかりと)サニタイズされて戻ってきます。

@return html
のような、htmlタグを返すという宣言?はできないのでしょうか?
また、戻り値として定義できる型の一覧などは、ドキュメントのどの辺りに記載されているのでしょうか?
ドキュメントを隅々まで読んでいる訳じゃないので「全部読め!」なのかもしれませんが・・・。


twigで{{変数}}と表示していた事が原因のようです。
{{変数|raw}}で、タグをタグとして表示できるようです。


ec-cubeは難しい・・
少しつまずくと解決方法が皆目わからない・・
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,234名です
総投稿数は110,340件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1688
8
red
1571
9
mcontact
1356
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.