Arrays 在CakePHP 3.x中将数组转换为日期格式的字符串

Arrays 在CakePHP 3.x中将数组转换为日期格式的字符串,arrays,string,datetime,cakephp,cakephp-3.x,Arrays,String,Datetime,Cakephp,Cakephp 3.x,在我的表单中,当我提交它时,我会发送一封通知电子邮件,其中包含表单输入。这些输入中的一个称为date 当我提交表单时,它以数组的格式提交,如下所示: [ 'year' => 'yyyy', 'month' => 'mm', 'day' => 'dd' ] <?= $date ?> 在我的控制器中,在将表单数据保存到数据库之前,我会向登录的用户发送一封电子邮件 这是我的电子邮件ViewVars的摘录: $email->viewVars

在我的表单中,当我提交它时,我会发送一封通知电子邮件,其中包含表单输入。这些输入中的一个称为
date

当我提交表单时,它以数组的格式提交,如下所示:

[
    'year' => 'yyyy',
    'month' => 'mm',
    'day' => 'dd'
]
<?= $date ?>
在我的控制器中,在将表单数据保存到数据库之前,我会向登录的用户发送一封电子邮件

这是我的电子邮件ViewVars的摘录:

$email->viewVars([
                'date' => $date,
            ]);
由于日期是以数组的形式出现的,因此我在电子邮件中收到以下错误:

Notice (8): Array to string conversion [APP/Template\Email\html\bookingrequest.ctp, line 15]
第15行是我对viewVars变量$date进行回显的行,如下所示:

[
    'year' => 'yyyy',
    'month' => 'mm',
    'day' => 'dd'
]
<?= $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();
另见