在 CakePHP 中将数组转换为日期格式的字符串 3.x
Converting array to string for date format in CakePHP 3.x
在我的表单中,当我提交它时,我会发送一封通知电子邮件,其中填充了表单输入。这些输入之一称为 date
.
我提交表单的时候,是按照数组的格式提交的,如下:
[
'year' => 'yyyy',
'month' => 'mm',
'day' => 'dd'
]
在我的控制器中,在将表单数据保存到数据库之前,我会向登录用户发送一封电子邮件。
这是我电子邮件的 ViewVars 的摘录:
$email->viewVars([
'date' => $date,
]);
因为日期是数组形式,所以邮件中出现如下错误:
Notice (8): Array to string conversion [APP/Template\Email\html\bookingrequest.ctp, line 15]
第 15 行是我回显 viewVars 变量 $date 的行,如下所示:
<?= $date ?>
我正在寻找从数组到字符串的转换方法,并尝试了以下方法:
鉴于$date = $data['session']['date'];
$date = date('Y-m-d',$date->getTimestamp());
- 不能用于数组
$date = $this->Bookings->Sessions->deconstruct('date', $date);
- 发现它已被弃用
$date = $data['session']['date']->i18nFormat();
- 不能用于数组
您可以使用 CakePHP 内部用于将日期的数组表示形式转换为实际日期对象的相同功能,即利用相应数据库类型对象的 marshal()
方法。一旦你有了一个日期对象,你就可以轻松地将它格式化为你喜欢的任何格式。
对于仅限日期的类型,您将使用 \Cake\Database\Type\DateType
,它应该通过 \Cake\Database\Type::build()
单例方法检索,以便使用与应用程序其余部分相同的实例:
$dateObject = \Cake\Database\Type::build('date')->marshal($date);
// ... maybe add a check here to ensure that the conversion was successful
echo $dateObject->i18nFormat();
另见
在我的表单中,当我提交它时,我会发送一封通知电子邮件,其中填充了表单输入。这些输入之一称为 date
.
我提交表单的时候,是按照数组的格式提交的,如下:
[
'year' => 'yyyy',
'month' => 'mm',
'day' => 'dd'
]
在我的控制器中,在将表单数据保存到数据库之前,我会向登录用户发送一封电子邮件。
这是我电子邮件的 ViewVars 的摘录:
$email->viewVars([
'date' => $date,
]);
因为日期是数组形式,所以邮件中出现如下错误:
Notice (8): Array to string conversion [APP/Template\Email\html\bookingrequest.ctp, line 15]
第 15 行是我回显 viewVars 变量 $date 的行,如下所示:
<?= $date ?>
我正在寻找从数组到字符串的转换方法,并尝试了以下方法:
鉴于$date = $data['session']['date'];
$date = date('Y-m-d',$date->getTimestamp());
- 不能用于数组$date = $this->Bookings->Sessions->deconstruct('date', $date);
- 发现它已被弃用$date = $data['session']['date']->i18nFormat();
- 不能用于数组
您可以使用 CakePHP 内部用于将日期的数组表示形式转换为实际日期对象的相同功能,即利用相应数据库类型对象的 marshal()
方法。一旦你有了一个日期对象,你就可以轻松地将它格式化为你喜欢的任何格式。
对于仅限日期的类型,您将使用 \Cake\Database\Type\DateType
,它应该通过 \Cake\Database\Type::build()
单例方法检索,以便使用与应用程序其余部分相同的实例:
$dateObject = \Cake\Database\Type::build('date')->marshal($date);
// ... maybe add a check here to ensure that the conversion was successful
echo $dateObject->i18nFormat();
另见