バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > バグ報告・利用に関する質問 > 配送伝票番号プラグイン(3.0系)の競合について

バグ報告・利用に関する質問

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
moge1203
投稿日時: 2018/4/20 13:09
対応状況: −−−
一人前
登録日: 2018/3/15
居住地:
投稿: 113
配送伝票番号プラグイン(3.0系)の競合について
▼テンプレート
[EC-CUBE] 3.0.15 , 新規インストール
[レンタルサーバ] heteml
[OS] macOS High Sierra ver10.13.3
[PHP] 7,0
[ブラウザ] Google Chrome
[カスタマイズの有無] 独自のhtmlファイルから組み込み

▼質問内容

皆様いつもお世話になっております。
配送伝票番号プラグイン(3.0系)のことで質問がありますので、
どなかたご教授お願いします。

配送伝票番号プラグイン(3.0系)を導入しているのですが、ポイントプラグインと競合してしまい、配送伝票番号の更新ができない状況です。

Pointプラグインと配送伝票番号プラグインの競合について
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=18946&forum=11

上記のフォーラムが同様の記事のようですが、
3.0.15の環境では記載のコードに変更を行うとエラーが発生してしまいます。
そもそも変更内容が間違っているのでしょうか。

どなたかご教授いただけないでしょうか?

念のため、変更後のソースを掲載させていただきます。

【変更前】

    public function registerShipNumber(FilterResponseEvent $event)
    {
      $app = $this->app;

      if ('POST' === $app['request']->getMethod()) {

        switch ($app['request']->get('mode')) {
            case 'register':

            $id = $app['request']->attributes->get('id');

            $TargetOrder = null;
            $OriginOrder = null;

            if (is_null($id)) {
                // 空のエンティティを作成.
                $TargetOrder = $this->newOrder();
            } else {
                $TargetOrder = $app['eccube.repository.order']->find($id);
                if (is_null($TargetOrder)) {
                    throw new NotFoundHttpException();
                }
            }

            // 編集前の受注情報を保持
            $OriginOrder = clone $TargetOrder;
            $OriginalOrderDetails = new ArrayCollection();

            foreach ($TargetOrder->getOrderDetails() as $OrderDetail) {
                $OriginalOrderDetails->add($OrderDetail);
            }

            $form = $app['form.factory']
                ->createBuilder('order', $TargetOrder)
                ->getForm();

            $form->handleRequest($app['request']);

            if ($form->isValid()) {

              $ship_number = $form->get('content')->getData();

              $order_id = $app['request']->attributes->get('id');

              $OrderContent = $app['eccube.plugin.repository.ship_number']->find($order_id);

              if (is_null($OrderContent)) {
                  $OrderContent = new \Plugin\ShipNumber\Entity\ShipNumber();
              }

              $Order = $app['eccube.repository.order']->find($order_id);

              $OrderContent
                  ->setShipNumber($ship_number)
                  ->setOrder($Order)
                  ->setOrderId($Order->getId());

              $app['orm.em']->persist($OrderContent);
              $app['orm.em']->flush();
            }
          
          default:
            break;
        }
      }
    }



【変更後】

    public function registerShipNumber(FilterResponseEvent $event)
    {
      $app = $this->app;

      if ('POST' === $app['request']->getMethod()) {

        switch ($app['request']->get('mode')) {
            case 'register':

            $id = $app['request']->attributes->get('id');

            $TargetOrder = null;
            $OriginOrder = null;

            if (is_null($id)) {
                // 空のエンティティを作成.
                $TargetOrder = $this->newOrder();
            } else {
                $TargetOrder = $app['eccube.repository.order']->find($id);
                if (is_null($TargetOrder)) {
                    throw new NotFoundHttpException();
                }
            }

            // 編集前の受注情報を保持
            $OriginOrder = clone $TargetOrder;
            $OriginalOrderDetails = new ArrayCollection();

            foreach ($TargetOrder->getOrderDetails() as $OrderDetail) {
                $OriginalOrderDetails->add($OrderDetail);
            }

//変更箇所はここから
use Symfony\Component\Validator\Constraints as Assert;

    ・・・

    $builder = $app['form.factory']->createBuilder('order', $TargetOrder);
    $builder = $this->buildFormForPointPlg($builder);
    $form = $builder->getForm();

    ・・・

    private function buildFormForPoint($builder) {
        $builder->add(
            'use_point',
            'integer',
            array(
                'label' => '利用ポイント',
                'required' => false,
                'mapped' => false,
                'attr' => array(
                    'class' => 'form-control',
                ),
                'constraints' => array(
                    new Assert\GreaterThanOrEqual(array('value' => 0)),
                    new Assert\Length(
                        array(
                            'max' => $this->app['config']['int_len'],
                        )
                    ),
                ),
            )
        )->add(
            'add_point',
            'integer',
            array(
                'label' => '加算ポイント',
                'required' => false,
                'mapped' => false,
                'attr' => array(
                    'class' => 'form-control',
                ),
                'constraints' => array(
                    new Assert\GreaterThanOrEqual(array('value' => 0)),
                    new Assert\Length(
                        array(
                            'max' => $this->app['config']['int_len'],
                        )
                    ),
                ),
            )
        );

        return $builder;
    }
//変更箇所はここまで

            $form->handleRequest($app['request']);

            if ($form->isValid()) {

              $ship_number = $form->get('content')->getData();

              $order_id = $app['request']->attributes->get('id');

              $OrderContent = $app['eccube.plugin.repository.ship_number']->find($order_id);

              if (is_null($OrderContent)) {
                  $OrderContent = new \Plugin\ShipNumber\Entity\ShipNumber();
              }

              $Order = $app['eccube.repository.order']->find($order_id);

              $OrderContent
                  ->setShipNumber($ship_number)
                  ->setOrder($Order)
                  ->setOrderId($Order->getId());

              $app['orm.em']->persist($OrderContent);
              $app['orm.em']->flush();
            }
          
          default:
            break;
        }
      }
    }
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » 配送伝票番号プラグイン(3.0系)の競合について moge1203 2018/4/20 13:09
     Re: 配送伝票番号プラグイン(3.0系)の競合について 468 2018/4/20 17:51
       Re: 配送伝票番号プラグイン(3.0系)の競合について moge1203 2018/4/20 18:12

 



ログイン


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

統計情報

総メンバー数は88,952名です
総投稿数は110,019件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
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.