Сохранение значений даты, переданных вызовом AJAX, в CakePHP - PullRequest
1 голос
/ 19 июня 2011

Я пытаюсь передать объект Date javascript контроллеру, который у меня есть в CakePHP, через вызов AJAX. Перед отправкой мне пришлось преобразовать объект даты в js, потому что он не отправлялся.

startDate = startDate.toUTCString();

В контроллере я получаю строку

Ср, 31 января 2001 14:01:01 GMT

Пока проблем нет. Но теперь мне нужно сохранить это значение в базе данных, которая использует поле datetime для этого. Я заметил, что Cake использует этот массив, который представляет дату и время.

[start_date] => Array
(
    [month] => 06
    [day] => 20
    [year] => 2011
    [hour] => 02
    [min] => 19
    [meridian] => am
)

Как я могу преобразовать строку, которая у меня была ранее, в эту структуру?

1 Ответ

2 голосов
/ 19 июня 2011

Вам не нужно. Cake просто сохраняет эту структуру внутри, но все, что ему действительно нужно, это строка даты, которая совместима с вашей базой данных. Таким образом, вы можете просто отправить ему строку в виде «ГГГГ-ММ-ДД», и она сохранит ее.

Лучший способ сделать это - отправить себе метку времени JS вместо строкового представления.

var date = new Date();
var timestamp = date.getTime();//this will give you the timestamp

Как только у вас будет отметка времени, отправьте ее на торт

//assuming you have the timestamp in the variable $timestamp
$formatted_date = date('Y-m-d', $timestamp / 1000); 
//dividing by 1000 because JS timestamps are in miliseconds and PHP uses seconds
$this->data['Model']['start_date'] = $formatted_date;

Это все, что тебе нужно сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...