プラグイン > 開発について > 自作の決済プラグインで2度同じ支払い方法を選択するとエラーとなる。 |
開発について
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
benio_goto |
投稿日時: 2021/1/29 13:52
対応状況: 解決済
|
新米 登録日: 2021/1/29 居住地: 投稿: 7 |
自作の決済プラグインで2度同じ支払い方法を選択するとエラーとなる。 [EC-CUBE] EC-CUBE4.0.5、新規インストール
[レンタルサーバ] Xserver [OS] Linux [PHP] PHP7.3 [データベース] MySQL [WEBサーバ] Apache [ブラウザ] FireFox85.0 [導入プラグインの有無] KOMOJU Payment for EC-CUBE4 [カスタマイズの有無] あればカスタマイズ内容を記載(できるだけ具体的に) [現象] 支払方法で2度同じ支払い方法を選択するとエラーとなる。「Expected argument of type "Plugin\KomojuPayment4\Entity\SpType", "null" given.」 具体的には支払い方法にスマホ決済、スマホ決済の種類LINEPAYを選んだ後に、コンビニ決済、コンビニの種類ファミリーマートを選んだ後に、再度スマホ決済を選択。 sample-payment-pluginをベースに自作したプラグインで、 FormExtensionでの考慮不足と考えています。解決方法をアドバイス頂ければと思います。 *-*-SpExtension-*-* public function buildForm(FormBuilderInterface $builder, array $options) { // ShoppingController::checkoutから呼ばれる場合は, フォーム項目の定義をスキップする. if ($options['skip_add_form']) { return; } $builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) { /** @var Order $data */ $data = $event->getData(); $form = $event->getForm(); $form->add('KomojuPaymentSpType', EntityType::class, [ 'class' => SpType::class, 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('p') ->where('p.flag = 1') ->orderBy('p.id', 'ASC'); }, 'choice_label' => 'name', 'multiple' => false, 'expanded' => true, 'mapped' => true, 'choice_value' => 'store_name', ]); }); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { // サンプル決済では使用しないが、支払い方法に応じて処理を行う場合は // $event->getData()ではなく、$event->getForm()->getData()でOrderエンティティを取得できる /** @var Order $Order */ $Order = $event->getForm()->getData(); $Order->getPayment()->getId(); $Payment = $this->paymentRepository->findOneBy(['method_class' => Sp::class]); }); } /** * {@inheritdoc} */ public function getExtendedType() { return OrderType::class; } } *-*-*-*-*-*-*-*-*-* *-*-*-*2021/02/19追記*-*-*-* 自己解決しました。 ~.twigの不備が主要因みたいでした。 {# Shopping/index.twigに以下のスニペットを追記 {{ include('@KomojuPayment4/sp.twig', ignore_missing=true) }} #} {% if Order.Payment.getMethodClass == 'Plugin\\KomojuPayment4\\Service\\Method\\Sp' %} ・ ・ ・ {% else %} {{ form_widget(form.Komoju_payment_token, { type: 'hidden' }) }} → {{ form_widget(form.KomojuPaymentSpType, { type: 'hidden' }) }} {% endif %} |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |