Я делаю это в 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.