2015-03-27 1 views
0

Как я могу легко добавить день к дате в CakePHP (2.6.x)? Если нет помощника или плагина, как это можно сделать с помощью кода?Добавить дни на данный момент в CakePHP (2.6.x)

Я попытался это, но CakePHP не знает add -метода:

$date = $this->request->data['Bill']['date']->add(new DateInterval('P1D')); 

ответ

0

Вы близки, но вы не можете просто add() так, потому что дата в массиве данных не DateTime объекта Тем не менее, это просто простая строка. Если вы перенёте его как таковой, все будет хорошо. Итак:

// Create a DateTime object from the date in the data array 
$date = new DateTime($this->request->data['Bill']['date']); 

Или если у вас есть день/месяц/год выпадающие вместо поля ввода текста:

$date = new DateTime(implode('-', array(
    $this->request->data['Bill']['date']['year'], 
    $this->request->data['Bill']['date']['month'], 
    $this->request->data['Bill']['date']['day'] 
))); 

Тогда у вас есть объект DateTime, и вы можете добавить день к нему:

// Add a day to this object 
$date->add(new DateInterval('P1D'); 

Если вы хотите, то эту новую дату, чтобы переопределить старый, вы можете сделать что-то вроде этого, чтобы сохранить новую дату:

$this->request->data['Bill']['date'] = $date->format('Y-m-d'); 
+0

Спасибо за ваш ответ :) К сожалению, я получаю это 'DateTime :: __ construct() ожидает, что параметр 1 будет строкой, массив задан', поскольку CakePHP обрабатывает его как 'array'. Есть идеи? – doonot

+0

@doonot У вас, вероятно, есть раздельные выпадающие дни в день/месяц/год, созданные FormHelper? Обновил мой ответ, чтобы освежить эту ситуацию. – Oldskool

+1

@ Oldskool Существует также [** 'Model :: deconstruct()' **] (http://api.cakephp.org/2.6/class-Model.html#_deconstruct) – ndm

Смежные вопросы