在 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'];

您可以使用 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();

另见