バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

その他 > その他 > 注文手続き画面に項目追加したい

その他

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
iwanaga
投稿日時: 2021/2/12 11:39
対応状況: −−−
新米
登録日: 2020/12/17
居住地: 福井
投稿: 5
Re: 注文手続き画面に項目追加したい
同事象で、こちらのスレッドにたどりつきました。
解決されないままで止まっているのですが、その後どうでしょうか。

解決方法はないでしょうか。
PDanny
投稿日時: 2019/10/11 23:59
対応状況: −−−
新米
登録日: 2019/10/11
居住地:
投稿: 1
Re: 注文手続き画面に項目追加したい
Today was not my lucky day, but I must say this article has reignited my ecstasy. Dissertation writing services. I am very pleased for finding this blog. Thank you for the information.Cheap dissertation writing service
aposto
投稿日時: 2019/9/25 1:44
対応状況: −−−
新米
登録日: 2019/9/11
居住地:
投稿: 2
Re: 注文手続き画面に項目追加したい
私もこの現象を再現することが出来ました。

ShoppingController.php内の以下のコード部分でnullが入るようです。

-------------------------------------------
/**
* 注文処理を行う.
*
* 決済プラグインによる決済処理および注文の確定処理を行います.
*
* @Route("/shopping/checkout", name="shopping_checkout", methods={"POST"})
* @Template("Shopping/confirm.twig")
*/
public function checkout(Request $request)
{
// ログイン状態のチェック.
if ($this->orderHelper->isLoginRequired()) {
log_info('[注文処理] 未ログインもしくはRememberMeログインのため, ログイン画面に遷移します.');

return $this->redirectToRoute('shopping_login');
}

// 受注の存在チェック
$preOrderId = $this->cartService->getPreOrderId();
$Order = $this->orderHelper->getPurchaseProcessingOrder($preOrderId);
if (!$Order) {
log_info('[注文処理] 購入処理中の受注が存在しません.', [$preOrderId]);

return $this->redirectToRoute('shopping_error');
}


// フォームの生成.
$form = $this->createForm(OrderType::class, $Order, [
// 確認画面から注文処理へ遷移する場合は, Orderエンティティで値を引き回すためフォーム項目の定義をスキップする.
'skip_add_form' => true,
]);
var_dump($form->getViewData()); //☆この部分ではnullはなし
$form->handleRequest($request);
var_dump($form->getViewData());exit; //☆この部分でnullが代入される

-------------------------------------------


解決方法等はまだわかっていません。
ゲスト
投稿日時: 2019/9/16 20:56
対応状況: −−−
Re: 注文手続き画面に項目追加したい
eccbeginer
投稿日時: 2019/8/4 6:34
対応状況: −−−
半人前
登録日: 2019/5/14
居住地:
投稿: 11
Re: 注文手続き画面に項目追加したい
田中様

お世話になっております。

引続き調査していましたところ
ご注文手続き画面から確認画面へ遷移するタイミングでは
仮確定段階の受注データとしてDBに値がセットされていました。以下のSQLでreceipt_addressが更新されていました。
UPDATE dtb_order SET order_no = '58', message = 'テスト問合せ', subtotal = '64800', discount = '0', delivery_fee_total = '0', charge = '0', tax = '4800', total = '64800', payment_total = '64800', add_point = '600', use_point = '0', receipt_address = 'テスト宛名', receipt_proviso = 'テス ト但し書き', update_date = '2019-08-03 21:18:00' WHERE id = 58

しかし、この後、注文確認画面から注文完了画面に遷移する際に再度、dtb_orderが更新される際にNULL値で上書きされていました。
UPDATE dtb_order SET subtotal = '64800', discount = '0', delivery_fee_total = '0', charge = '0', tax = '4800', total = '64800', payment_total = '64800', add_point = '600', receipt_address = NULL, receipt_proviso = NULL, update_date = '2019-08-03 21:20:51' WHERE id = 58

このUPDATE文に今回追加した項目を対象として含めるようなコードは追記していないのですが、自動的に追加されてしまっているようです。
確認したところ、EntityおよびShopping\index.twigに追加したことでこのUPDATE文に追加されるようです。

上記UPDATE文でNULL値ではなく、値を設定する方法、
または上記UPDATE文の対象から該当項目を除外する方法は
ございませんでしょうか。

どうぞよろしくお願いいたします。
h_tanaka
投稿日時: 2019/7/29 21:42
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1850
Re: 注文手続き画面に項目追加したい
うーん。。
問題ないように見受けられます。


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

eccbeginer
投稿日時: 2019/7/26 18:27
対応状況: −−−
半人前
登録日: 2019/5/14
居住地:
投稿: 11
Re: 注文手続き画面に項目追加したい
田中様

ご回答を頂戴し、ありがとうございます。

Controller や Repositoryは特に何も更新しておりません。

\Customize\EntityにOrderTrait.phpを作成し、
bin/console eccube:generate:proxies コマンドで Proxy クラスを生成し、Entityの拡張を行っており、プラグインの作成を行っていないのですが、画面項目追加のやり方としてそもそも合っておりますでしょうか?

また、OrderTrait.phpの内容は以下の内容としております。
お気づきの点などございましたら、ご教示お願いいたします。

namespace Customize\Entity;

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

/**
* @EntityExtension("Eccube\Entity\Order")
*/
trait OrderTrait
{
/**
* @ORM\Column(type="string",nullable=true)
* @Eccube\Annotation\FormAppend(
* auto_render=true,
* type="\Symfony\Component\Form\Extension\Core\Type\TextType",
* options={
* "required": false,
* "label": "領収書宛名"
* })
*/
public $receipt_address;

/**
* @ORM\Column(type="string",nullable=true)
* @Eccube\Annotation\FormAppend(
* auto_render=false,
* type="\Symfony\Component\Form\Extension\Core\Type\TextType",
* options={
* "required": false,
* "label": "領収書但し書き"
* })
*/
public $receipt_proviso;

}


どうぞよろしくお願いいたします。

h_tanaka
投稿日時: 2019/7/26 17:31
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1850
Re: 注文手続き画面に項目追加したい
通常は、Entity, Form, twig で定義してやれば保存までもできるはずです。
プラグインの中身は見ていないのですが、Controller や Repository でなにか特殊な保存処理は行っていないでしょうか?


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

eccbeginer
投稿日時: 2019/7/26 13:53
対応状況: −−−
半人前
登録日: 2019/5/14
居住地:
投稿: 11
Re: 注文手続き画面に項目追加したい
田中様

早速のご返信をありがとうございます。

Eccube\Form\Type\Shopping\ShoppingType.phpは
以下のように定義しております。
「←追記」の部分が追記箇所(計7か所)となります。

namespace Eccube\Form\Type;

use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;    ← 追記
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;

class ShoppingType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$payments = $options['payments'];
$payment = $options['payment'];
$message = $options['message'];
$receipt_address = $options['receipt_address'];    ←追記

$builder
->add('payment', EntityType::class, [
'class' => 'Eccube\Entity\Payment',
'choice_label' => 'method',
'choices' => $payments,
'data' => $payment,
'expanded' => true,
'constraints' => [
new Assert\NotBlank(),
],
])

      ->add('message', TextareaType::class, [
'required' => false,
'data' => $message,
'constraints' => [
new Assert\Length(['min' => 0, 'max' => 3000]),
],
])

->add('receipt_address', TextType::class, [    ←追記
'required' => false,              ←追記
'data' => $receipt_address           ←追記
]);                        ←追記
}
  public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'payments' => [],
'payment' => null,
'message' => null,
'receipt_address' => null             ←追記
]);
}

/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'shopping';
}
}

どうぞよろしくお願い致します。
h_tanaka
投稿日時: 2019/7/26 12:41
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1850
Re: 注文手続き画面に項目追加したい
FormType はどのように定義されていますか?


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

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は95,982名です
総投稿数は111,643件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2325
5
umebius
2085
6
yuh
1893
7
h_tanaka
1850
8
red
1574
9
mcontact
1536
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
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.