Intereting Posts
Порт 80 заблокирован на cpanel из-за вредоносного файла phpunit eval-stdin.php Рекомендации и рекомендации по созданию сайта с прокси-сайтом Как получить время истечения срока действия cookie Способ избежать использования псевдонима Apache для включения HTML-ресурсов, таких как CSS Запрос Sparql ошибочно повлек за собой неправильную геологию на + inexistence в результатах свойства, которое мне было необходимо рисование «хороших» графиков в php создать собственный файл_id в mongo GridFs с помощью PHP DOMDocument: игнорировать повторяющиеся идентификаторы элементов Как я могу передать короткий короткий текст WordPress Регулярное выражение PHP для проверки английского имени Включить загрузку файлов для php в Google App Engine Как запустить php-скрипт в командной строке при доступе к среде larvel и классам Обрезка сухаря PHP: Самый простой способ удалить папку (включая ее содержимое) php: запись файла .ics (iCal)? Дата форматирования?

Как лучше всего преобразовать данные формы выбора даты CakePHP в объект PHP DateTime?

Я делаю это в app/views/mymodel/add.ctp :

 <?php echo $form->input('Mymodel.mydatefield'); ?> 

И затем, в app/controllers/mymodel_controller.php :

 function add() { # ... (if we have some submitted data) $datestring = $this->data['Mymodel']['mydatefield']['year'] . '-' . $this->data['Mymodel']['mydatefield']['month'] . '-' . $this->data['Mymodel']['mydatefield']['day']; $mydatefield = DateTime::createFromFormat('Ym-d', $datestring); } 

Абсолютно должен быть лучший способ сделать это – я еще не нашел способ CakePHP …

Я бы хотел:

 function add() { # ... (if we have some submitted data) $mydatefield = $this->data['Mymodel']['mydatefiled']; # obviously doesn't work } 

Я знаю, что это старый вопрос, но в случае, если кто-то еще ищет ответ: общий класс Model CakePHP имеет метод ::deconstruct() , который используется для внутренней обработки этой необходимой логики. Вы можете использовать его следующим образом:

 $stringDate = $this->MyModel->deconstruct('fieldname', $arrayDate) 

Вы можете написать Помощник, который принимает в качестве параметра $this->data['Mymodel']['mydatefiled'] в качестве параметра, предполагает, что год / месяц / день находятся в массиве и соответственно анализируются:

 <?php /* /app/views/helpers/date.php */ class DateHelper extends AppHelper { function ParseDateTime($dateField) { $datestring = $dateField['year'] . '-' .$dateField['month'] . '-' . $dateField['day']; return DateTime::createFromFormat('Ym-d', $datestring); } } ?> 

Или что-то типа того. Я думаю, что объект DateTime был добавлен в … PHP 5.2? CakePHP 1.x нацелен на совместимость с PHP 4, поэтому я не думаю, что для этого есть «способ CakePHP», по крайней мере, не для 1.x.