バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > DBへのデータの渡し方について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
saitom
投稿日時: 2025/1/15 18:43
対応状況: −−−
常連
登録日: 2024/11/1
居住地:
投稿: 38
DBへのデータの渡し方について
▼テンプレート
[EC-CUBE] 4.2
[現象] confirm.twigで {% if Order.hide_sender or Order.use_delivery_box or Order.request_call or Order.campaign_info %}

と {% if Order.hide_sender %}こういったソースだけで
DBにデータが登録されるのはなぜですか?(inputなどが要らない)

controller内にあるpublic function confirm(Request $request)
でどのように定義されているのでしょうか
confirmまではデータが渡っているのに、DBに登録できない状態です。
mcontact
投稿日時: 2025/1/15 20:01
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1593
Re: DBへのデータの渡し方について
[現象] confirm.twigで {% if Order.hide_sender or Order.use_delivery_box or Order.request_call or Order.campaign_info %}

と {% if Order.hide_sender %}こういったソースだけで
DBにデータが登録されるのはなぜですか?(inputなどが要らない)


twigファイルでは、DBデータへは参照しかありませんのでデータの登録処理はありません。
controller部内からのDBへの登録処理が参照されています。


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

h_tanaka
投稿日時: 2025/1/16 9:04
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1911
Re: DBへのデータの渡し方について
Symfony の基本的な仕組みを勉強されてください。

注文すべきは twig ではなく Controller です。

ShoppingController でいえば、 $Order を作成して $this->entityManager->flush(); で保存しています。

ご提示されている条件文はEC-CUBE標準にはなく独自カスタマイズされたソースに見受けられるので、特別な処理が施されている可能性はありますが。。


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

saitom
投稿日時: 2025/1/16 13:14
対応状況: −−−
常連
登録日: 2024/11/1
居住地:
投稿: 38
Re: DBへのデータの渡し方について
返信ありがとうございます。
チェックボックスのみ保存されない状態です。

controllreのfunction confirm内の
$form = $this->createForm(OrderType::class, $Order);
$form->handleRequest($request);
// dd($form);
ここではデータが正しく取得(true)になっていますが
function checkout内で
$form = $this->createForm(OrderType::class, $Order, [
// 確認画面から注文処理へ遷移する場合は, Orderエンティティで値を引き回すためフォーム項目の定義をスキップする.
'skip_add_form' => true,
]);
$form->handleRequest($request);
dd($form);
このように記載し確認すると、falseになってしまい、DBに登録されてしまいます。
同じように追加したテキストエリアは正常に登録されます。
また、src上ではチェックボックスも正常に登録されます。
(customizeにコピーし、namespace等修正したcontrollerで登録がうまくできません)
原因をどのように特定すればよいでしょうか?
h_tanaka
投稿日時: 2025/1/16 14:28
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1911
Re: DBへのデータの渡し方について
チェックボックスを定義している FormType のソースコードを開示してもらえますでしょうか。


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

saitom
投稿日時: 2025/1/16 14:47
対応状況: −−−
常連
登録日: 2024/11/1
居住地:
投稿: 38
Re: DBへのデータの渡し方について
こちらでよろしいでしょうか?


public function buildForm(FormBuilderInterface $builder, array $options)
{
// ShoppingController::checkoutから呼ばれる場合は, フォーム項目の定義をスキップする.
if ($options['skip_add_form']) {
return;
}
$builder->add('hide_sender', CheckboxType::class, [
'label' => '発送者・商品名を伏せる',
'required' => false,
])

->add('use_delivery_box', CheckboxType::class, [
'label' => '不在時宅配ボックスの利用可否',
'required' => false,
])

->add('request_call', CheckboxType::class, [
'label' => '配送前の確認TELを依頼するか',
'required' => false,
])

->add('campaign_info', CheckboxType::class, [
'label' => 'キャンペーン情報を希望するか',
'required' => false,
]);
h_tanaka
投稿日時: 2025/1/16 14:52
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1911
Re: DBへのデータの渡し方について
なんでしょうね。。
見た感じでは問題が見当たりません。

デバッグする必要があるかと思います。
checkout のタイミングでは form からの保存は行っていないので、
dd($form);
ではなく、
dd($Order);
で確認する必要があります。


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

saitom
投稿日時: 2025/1/16 19:01
対応状況: −−−
常連
登録日: 2024/11/1
居住地:
投稿: 38
Re: DBへのデータの渡し方について
ありがとうございます。

デバックしたところ、 $orderの値が置換されていたので

最後の$this->entityManager->flush();の直前で値を再設定するように書き換えればデータが正しい値で登録されました。

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


 



ログイン


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

統計情報

総メンバー数は98,582名です
総投稿数は112,032件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2325
5
umebius
2085
6
h_tanaka
1911
7
yuh
1898
8
mcontact
1593
9
red
1575
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
805
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
balisys
502


ネットショップの壺

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

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