バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > Pointプラグインと配送伝票番号プラグインの競合について

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
soony
投稿日時: 2017/5/1 9:57
対応状況: −−−
新米
登録日: 2017/2/9
居住地:
投稿: 6
Pointプラグインと配送伝票番号プラグインの競合について
[EC-CUBE] 3.0.13 新規インストール
[OS] CentOS6.8
[PHP] PHP7.0
[データベース] MYSQL5.1
[WEBサーバ] Apache2.2
[導入プラグインの有無] Pointプラグイン
[カスタマイズの有無] 無し
[現象]
EC-CUBE3.0.13にて、配送伝票番号プラグインの利用を検討していますが、
http://www.ec-cube.net/products/detail.php?product_id=1001

別途、株式会社ロックオン社開発のPointプラグインを導入しておりまして、
http://www.ec-cube.net/products/detail.php?product_id=1101

このプラグインがインストールされていると、
配送伝票番号プラグインが正常に動作しないようです。


原因の箇所としては、受注情報の編集画面からデータを保存する際に、

/app/Plugin/ShipNumber/ShipNumberEvent.php
101行目


if ($form->isValid()) {


この部分でバリデーションエラーとなってしまうようで、
requestの値に
・add_point
・use_point
という、Pointプラグインの値が入っていることで、怒られてしまうようです

$formに、上記の要素の追加を試みたり、
$app['request']から、逆に要素を除隊しようとしてみたりと、
いくらか試行錯誤はしましたが、データ構造がよく理解できていないために、
うまく解決に至りませんでした。

こちらの解決方法について、ご教授いただけませんでしょうか。

どうぞよろしくお願いいたします。
soony
投稿日時: 2017/5/1 15:13
対応状況: 解決済
新米
登録日: 2017/2/9
居住地:
投稿: 6
Re: Pointプラグインと配送伝票番号プラグインの競合について
自己解決しました

エラーの原因が、form-type定義にないrequest値をバリデートすることでしたので、
Pointプラグインのソースを参考に、add_point, use_pointの定義を追加することで解決しました。


/app/Plugin/ShipNumber/ShipNumberEvent.php
95行目あたり

▼before

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


▼after

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;
    }


Pointプラグインありきのコードになってしまうため、汎用性を欠いてしまいますが・・・、
今回のサイト専用のカスタマイズということで、許容してしまおうと思います。
penguin7
投稿日時: 2017/9/28 11:33
対応状況: −−−
新米
登録日: 2017/9/20
居住地:
投稿: 3
Re: Pointプラグインと配送伝票番号プラグインの競合について
はじめまして。
ちょうど同じ競合を発見し、投稿いただいたコードで解決しました。

なお、軽微な訂正ですが、

$builder = $this->buildFormForPointPlg($builder);



$builder = $this->buildFormForPoint($builder);

ですね。

ありがとうございました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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