在我的表单中,当我提交时,我会发送一封填写了表单输入的通知电子邮件。其中一个输入称为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();
- 无法在数组中使用答案 0 :(得分:3)
您可以使用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();
另见