Я пытаюсь реализовать этот пример в моем приложении CakePHP 3.6.14.
(function( $ ) {
$.widget( "ui.dp", {
_create: function() {
var el = this.element.hide();
this.options.altField = el;
var input = this.input = $('<input>').insertBefore( el )
input.focusout(function(){
if(input.val() == ''){
el.val('');
}
});
input.datepicker(this.options)
if(convertDate(el.val()) != null){
this.input.datepicker('setDate', convertDate(el.val()));
}
},
destroy: function() {
this.input.remove();
this.element.show();
$.Widget.prototype.destroy.call( this );
}
});
var convertDate = function(date){
if(typeof(date) != 'undefined' && date != null && date != ''){
return new Date(date);
} else {
return null;
}
} })( jQuery );
Так что в default.ctp
у меня есть этот код:
$(document).ready(function() {
$( "input.datepicker" ).dp({
dateFormat: 'dd/mm/yy',
altFormat: 'yy-mm-dd'
});
});
И в edit.ctp
у меня есть этот элемент управления:
echo $this->Form->control('created_date', ['class' => 'datepicker', 'type' => 'text', 'empty' => true]);
Хотя он отправляет и правильно сохраняет дату в базе данных, когда я снова открываю страницу редактирования, я вижу сегодняшнюю дату, а не ту избаза данных.Значение базы данных: 2019-06-27, и если я изменю параметр dateFormat
на yy-mm-dd
, я все равно получу сегодняшнюю дату вместо даты, сохраненной в БД.
Но в сгенерированном HTML-коде яможно увидеть, что значение верное: