バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > OrderTypeに項目を追加すると購入エラーと表示されます。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
hashida
投稿日時: 2021/6/28 16:10
対応状況: −−−
半人前
登録日: 2021/6/25
居住地:
投稿: 18
OrderTypeに項目を追加すると購入エラーと表示されます。
▼テンプレート
[EC-CUBE] EC-CUBEのバージョン4.0.5、新規インストール
[OS] Docker Windows
[PHP] 7.4
[データベース] SQLite
[ブラウザ] クロム
[カスタマイズの有無] 注文項目に受け取り時間を追加しようとOrderTypeを拡張しました。データベースの値がNULLになってしまうので、https://ruco.la/memo/404を参考にしました。
以下が追加したコードでございます。
[OrderTrait.php]
<?php

namespace Plugin\takeout\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation\EntityExtension;

/**
* @EntityExtension("Eccube\Entity\Order")
*/
trait OrderTrait
{
/**
* @ORM\Column(name="takeout_time",type="datetimetz", nullable=true)
*/
private $takeout_time;

public function getTakeouttime():?\DateTimeInterface
{
return $this->takeout_time;
}


public function setTakeouttime(?\DateTimeInterface $takeout_time): self
{
$this->takeout_time = $takeout_time;

return $this;
}
}

[takeoutOrderExtension.php]
<?php

/*
* This file is part of EC-CUBE
*
* Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
*
* http://www.ec-cube.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Plugin\takeout\Form\Extension;

use Eccube\Common\EccubeConfig;
use Eccube\Entity\Order;
use Eccube\Form\Type\Shopping\OrderType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Validator\Constraints as Assert;

class takeoutOrderExtension extends AbstractTypeExtension
{
private $eccubeConfig;

public function __construct(EccubeConfig $eccubeConfig)
{
$this->eccubeConfig = $eccubeConfig;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('takeout_time', DateTimeType::class, [
'label' => '受け取り希望時間',
'required' => false,
'years' => range(date('Y'), date('Y') + 10),
'placeholder' => [ 'year' => '----', 'month' => '--', 'day' => '--', 'hour' => '--', 'minute' => '--' ],
'eccube_form_options' => [
'auto_render' => true
]
])
->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'onPreSubmit'])
;
}

public function onPreSubmit(FormEvent $event)
{
// ShoppingControllerのcheckoutでhandleRequestの後にtakeout_timeが消える問題の対応
$data = $event->getData();
$takeout_time = $event->getForm()->get('takeout_time')->getData();
if( !isset($data['takeout_time']) ){
$data['takeout_time'] = $takeout_time ;
}
$event->setData($data);
}


/**
* {@inheritdoc}
*
*/
public function getExtendedType()
{
return OrderType::class;
}
}



[現象] 受け取り時間を入力して、確認するをクリックし、時間が入力された子を確認はできるのですが、注文をするをクリックすると「購入エラー」と表示されるだけで、デバッグモードにしても何がエラーを起こしているのか確認できません。
初歩的な質問で申し訳ありません。どなたかご教授いただけますと幸いでです。
hashida
投稿日時: 2021/6/29 9:33
対応状況: −−−
半人前
登録日: 2021/6/25
居住地:
投稿: 18
Re: OrderTypeに項目を追加すると購入エラーと表示されます。
buildformに下記を追加することで解決できました。

// ShoppingController::checkoutから呼ばれる場合は, フォーム項目の定義をスキップする.
if ($options['skip_add_form']) {
return;
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は73,047名です
総投稿数は102,095件です

投稿数ランキング

1
seasoft
7333
2
468
3073
3
AMUAMU
2712
4
nanasess
2174
5
umebius
2030
6
yuh
1612
7
red
1453
8
h_tanaka
1090
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.