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();
另见