バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > 開発について > 国情報が保存できない

開発について

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
h_tanaka
投稿日時: 2018/5/7 17:58
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1646
国情報が保存できない
EC-CUBE3.0.16

商品購入時にプラグインにて国情報を保存したいと思っています。

会員で購入する場合は問題なく国情報が保存できたのですが、ゲスト購入の場合に $app['orm.em']->flush(); のタイミングで次のようなエラーが発生してしまいます。
このエラーはどうすれば解決できるでしょうか?

■エラー
ORMInvalidArgumentException in ORMInvalidArgumentException.php line 91:
A new entity was found through the relationship 'Eccube\Entity\Order#Country' that was not configured to cascade persist operations for entity: ニューカレドニア. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}).


以下、実装したソースを記載します。

app/Plugin/Test/event.yml
Shopping/nonmember.twig:
    - [onRenderShoppingNonmember, NORMAL]
front.shopping.nonmember.complete:
    - [onFrontShoppingNonmemberComplete, NORMAL]
front.shopping.index.initialize:
    - [onFrontShoppingIndexInitialize, NORMAL]


app/Plugin/Test/TestEvent.php
class TestEvent
{
    private $sessionKey = 'eccube.plugin.test.shopping.nonmember';
    private $app;

    public function __construct($app)
    {
        $this->app = $app;
    }

    /**
     * お客様情報の入力ページに国を表示する.
     */
    public function onRenderShoppingNonmember(TemplateEvent $event)
    {
        $app = $this->app;
        $source = $event->getSource();

        // 国を表示
        $snipet = "<div id="detail_box__country" class="form-group form-inline {% if form.country.vars.errors is not empty %}has-error{% endif %}">{{ form_widget(form.country) }}</div>";
        $search = '<div id="detail_box__zip"';
        $replace = $snipet.$search;
        $source = str_replace($search, $replace, $source);

        $event->setSource($source);
    }

    /**
     * お客様情報の入力ページで国をセッションに登録する.
     */
    public function onFrontShoppingNonmemberComplete(EventArgs $event)
    {
        $app = $this->app;

        $form = $event['form'];
        $Order = $event['Order'];

        $Country = $form->get('country')->getData();
        $nonMember = $app['session']->get($this->sessionKey);
        $nonMember['Customer'] = $app['eccube.service.shopping']->getNonMember('eccube.front.shopping.nonmember');
        $nonMember['Country'] = $Country;
        $app['session']->set($this->sessionKey, $nonMember);
    }

    /**
     * 購入で国を登録する.
     */
    public function onFrontShoppingIndexInitialize(EventArgs $event)
    {
        $app = $this->app;

        $Order = $event['Order'];
        if (!$app->isGranted('IS_AUTHENTICATED_FULLY')) {
            $nonMember = $app['session']->get($this->sessionKey);
            $Customer = $nonMember['Customer'];
            $Customer->setCountry($nonMember['Country']);
        } else {
            $Customer = $app->user();
        }

        // 標準では注文情報に国が設定されない
        $Order->setCountry($Customer->getCountry());
        $app['orm.em']->persist($Order);

        foreach ($Order->getShippings() as $Shipping) {

            // 標準では配送情報に国が設定されない
            $CustomerAddress = $this->app['eccube.repository.customer_address']->findOneBy(
                array('Customer' => $Customer),
                array('id' => 'ASC')
            );
            if ($CustomerAddress) {
                $Shipping->setCountry($CustomerAddress->getCountry());
                $app['orm.em']->persist($Shipping);
            }
        }
        $app['orm.em']->flush();    // ★ ここでエラーが発生する
    }
}


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » 国情報が保存できない h_tanaka 2018/5/7 17:58
     Re: 国情報が保存できない umebius 2018/5/7 20:51
       Re: 国情報が保存できない h_tanaka 2018/5/8 15:59

 



ログイン


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

統計情報

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

投稿数ランキング

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