バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > Could not convert PHP value '配列要素' of type 'string' to type 'datetimetz'. エラーの解消手法

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yas-himuka
投稿日時: 2024/9/24 14:49
対応状況: −−−
新米
登録日: 2024/7/9
居住地:
投稿: 6
Could not convert PHP value '配列要素' of type 'string' to type 'datetimetz'. エラーの解消手法
▼テンプレート
[EC-CUBE] 4.0.6p-1
[レンタルサーバ] ローカル(MAMP)
[OS] MacOS 14.6.1
[PHP] 7.4.33
[データベース] MySQL 5.7.44
[WEBサーバ] Apache/2.4.58 (Unix)
[ブラウザ] GoogleChrome
[導入プラグインの有無] なし
[現象] ゲスト購入画面でプルダウンの受取日を記述したが
Could not convert PHP value '例)2024/10/01' of type 'string' to type 'datetimetz'. Expected one of the following types: null, DateTimeと表示され確認画面に遷移しない。

「行ったこと」
前提、Customertrait.Ordertraitへdatetimetzで定義済み。
1.NomemberTypeExtion.phpへ以下を記述
$UkeDate = new \DatePeriod(
$startDt,
new \DateInterval('P1D'),
$endDt->modify('+1 days')
);
$dateFormatter = \IntlDateFormatter::create(
'ja_JP',
\IntlDateFormatter::FULL,
\IntlDateFormatter::FULL,
'Asia/Tokyo',
\IntlDateFormatter::GREGORIAN,
'yyyy/MM/dd (EEEE)'
);
foreach ($UkeDate as $day) {
$UkeDateArray[$day->format('Y/m/d')] =
$dateFormatter->format($day); 
$Ukedate = implode(',',$UkeDateArray);
}
$Ukedate =implode(',', $UkeDateArray);

--form--
->add('UkeDate', ChoiceType::class, [
'choices' => array_flip($UkeDateArray),
'placeholder' => '日付を選択してください。',
'mapped' => false,
'required' => false,
])

2.NomeberShoppingController.phpへ
$UkeDate = $form['UkeDate']->getData();
$UkeDate = \DateTime::createFromFormat('Y/m/d(EEEE)', $UkeDate);
を記述

3.Nomember.Twingへ記述
<dl>
<dt>
{{ form_label(form.shipping_delivery_date, '来店受取日', {
'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-select ec-select__delivery">
{{ form_widget(form.UkeDate, {'attr': {'class': 'form-
control'}}) }}
{{ form_errors(form.UkeDate) }}
</div>
</dd>
</dl>

以上を記述し、ゲスト購入画面で表示し選択も出来ますが「次へ」押下すると表題のエラーが出てcomfirm画面に進めません。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=24840&forum=2&post_id=103987#forumpost103987を参考にしましたが解決が図れず、皆様のお知恵をお借りしたく存じます。
何卒、ご教示の程よろしくお願い致します。
h_tanaka
投稿日時: 2024/9/24 15:13
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1844
Re: Could not convert PHP value '配列要素' of type 'string' to type 'datetimetz'. エラーの解消手法
エラーメッセージに、エラーが発生しているファイルと行数が出力されていると思います。
そこを確認してください。


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

yuh
投稿日時: 2024/9/25 15:32
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1892
Re: Could not convert PHP value '配列要素' of type 'string' to type 'datetimetz'. エラーの解消手法
datetimeやdatetimetz型に変更できないという内容のエラーになるので、そこらへんから原因の特定を行ってみてください。


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


http://ec-lab.net/

h_tanaka
投稿日時: 2024/9/25 16:17
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1844
Re: Could not convert PHP value '配列要素' of type 'string' to type 'datetimetz'. エラーの解消手法
読み返して気づきました。
エラーメッセージ記載されていますね。

'例)2024/10/01' という文字列を DateTime に変換しようとしているようですので、プレースホルダーがそのまま値としてPOSTされているのではないかと思われます。


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

yas-himuka
投稿日時: 2024/9/26 13:56
対応状況: 解決済
新米
登録日: 2024/7/9
居住地:
投稿: 6
Re: Could not convert PHP value '配列要素' of type 'string' to type 'datetimetz'. エラーの解消手法
ご返信ありがとうございます。
自己解決しました。
ShoppingContoroller内
$Ukedate = $form['Ukedate']->getData();後に新しいインスタンス
if ($Ukedate) {
$Ukedate = new \DateTime($Ukedate);
} else {
$Ukedate = null;
}
を記述することで解決しました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2325
5
umebius
2085
6
yuh
1892
7
h_tanaka
1844
8
red
1574
9
mcontact
1526
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.