質問 > その他 > 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'. エラーの解消手法 エラーメッセージに、エラーが発生しているファイルと行数が出力されていると思います。
そこを確認してください。
|
yuh |
投稿日時: 2024/9/25 15:32
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1892 |
Re: Could not convert PHP value '配列要素' of type 'string' to type 'datetimetz'. エラーの解消手法 datetimeやdatetimetz型に変更できないという内容のエラーになるので、そこらへんから原因の特定を行ってみてください。
|
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されているのではないかと思われます。
|
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; } を記述することで解決しました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |