2017-02-24 69 views
3

在我的表单中,当我提交它时,我发送一封通知电子邮件,其中填入了表单输入。一个这些输入被称为date在CakePHP 3.x中将数组转换为日期格式的字符串

当我提交表单,它是在一个数组的形式提交如下:

[ 
    '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 ?> 

我正在查找w从阵列做一个转换为字符串和AYS曾尝试以下:

鉴于$date = $data['session']['date'];

  • $date = date('Y-m-d',$date->getTimestamp()); - 不能阵列
  • $date = $this->Bookings->Sessions->deconstruct('date', $date);上使用 - 发现它已被废弃
  • $date = $data['session']['date']->i18nFormat(); - 不能用于阵列

回答

3

您可以使用CakePHP内部使用的相同功能s将日期的数组表示形式转换为实际日期对象,即使用相应数据库类型对象的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(); 

参见

+0

这做的工作,谢谢。 – mistaq

相关问题