2017-02-24 68 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

相關問題