プラグイン > 開発について > 拡張した ShippingType でエンティティを取得したい |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
h_tanaka |
投稿日時: 2018/5/22 9:35
対応状況: 解決済
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
拡張した ShippingType でエンティティを取得したい EC-CUBE3.0.16
管理画面の受注登録ページにおいて、お届け先フォームを拡張したいと思っています。 標準の OrderType を拡張して、AdminOrderTypeExtension を作成したときは、次のように $options['data'] で Order エンティティを取得できました。 AdminOrderTypeExtension.php
同様に、標準の ShippingType を拡張して、AdminShippingTypeExtension を作成したときに、Shipping エンティティを取得するにはどうすればよいでしょうか? AdminShippingTypeExtension.php
|
minori |
投稿日時: 2018/5/23 14:32
対応状況: −−−
|
常連 登録日: 2017/10/12 居住地: 投稿: 40 |
Re: 拡張した ShippingType でエンティティを取得したい イベントリスナーを使えばできると思います。
$event->getData()でShippingエンティティが取得できるはずです。
|
h_tanaka |
投稿日時: 2018/5/24 16:04
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
Re: 拡張した ShippingType でエンティティを取得したい minori 様
ありがとうございます。 ただ、ご提案どおりに実装しましたが、とれてくる $Shipping が null になってしまうようです。
|
umebius |
投稿日時: 2018/5/24 17:12
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 拡張した ShippingType でエンティティを取得したい h_tanaka 様の拡張の目的がイベントリスナーのタイミングで実現できるものなのかどうか分からないのですが
フォームで送信されたデータをShippingエンティティとして取得するのであれば下記のようにすればできるかと思います。
|
umebius |
投稿日時: 2018/5/24 17:21
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 拡張した ShippingType でエンティティを取得したい 一方、送信前データなら下のような形でしょうか。
目的に合っているか分かりませんし、検証もしておりませんがご容赦ください。
|
h_tanaka |
投稿日時: 2018/5/24 17:47
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
Re: 拡張した ShippingType でエンティティを取得したい umebius 様
ありがとうございます。 お届け先のFormを拡張して国情報と電話番号情報を追加したいと思っています。 なので、SUBMITのタイミングではないんです。。 イベントリスナー考慮前のソースを記載いたします。
|
umebius |
投稿日時: 2018/5/25 7:58
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 拡張した ShippingType でエンティティを取得したい h_tanaka 様
目的によって使用するイベントは異なりますが、PRE_SET_DATA、POST_SET_DATA、PRE_SUBMITあたりでフォームを追加するのは常套手段かと思います。 EC-CUBE既存のコードの引用になりますが、下記のようにすれば追加できるのではないでしょうか。
|
h_tanaka |
投稿日時: 2018/5/25 12:08
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
Re: 拡張した ShippingType でエンティティを取得したい umebius 様ご提示のコードでは、
にて$Shippingが取得できているようですが、同様の方法で取得できなかったんです。
うーん、なぜでしょう。。
|
minori |
投稿日時: 2018/5/28 18:33
対応状況: −−−
|
常連 登録日: 2017/10/12 居住地: 投稿: 40 |
Re: 拡張した ShippingType でエンティティを取得したい PRE_SET_DATAのタイミングで取得出来るデータは
フォーム生成時に初期値として渡されたデータです。 コントローラーでは $app['form.factory']->createBuilder('order', $TargetOrder) でフォームを生成していますので、 $TargetOrderにShippingのデータを持っていれば 取得できると思うのですが・・・。 ShippingTypeのExtensionを実装したことがありますが、 PRE_SET_DATAのタイミングでShippingエンティティの情報が取得できました。 受注編集の場合でも、イベントリスナーで Shippingエンティティを取得できないのでしょうか? |
h_tanaka |
投稿日時: 2018/5/29 11:34
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
Re: 拡張した ShippingType でエンティティを取得したい minori 様
コントローラーで dump してみたところ、Shipping エンティティが出力されました。
しかし、前のコメントのように、ShippingType を拡張したクラスで PRE_SET_DATA のタイミングでエンティティを取得しようとしても変数がnullになっているようなんです。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |