Para poner un calendar en una fecha tenemos varias opciones. Quizá la más sencilla sea incluir jquery y jquery ui. Para hacer esto debemos añadir las siguientes líneas en default.ctp:
echo $this->Html->script("https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js");
echo $this->Html->css('https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css');
echo $this->Html->script("https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js");
Una vez hecho, sólo tenemos que cambiar la vista donde esté nuestra fecha, haciéndola de tipo texto y añadiendo el datepicker:
<script>
$(function() {
$("#calendario").datepicker({
dateFormat: "dd-mm-yy",
});
});
</script>
......
echo $this->Form->input('fecha', array(
'id' => 'calendario',
'type' => 'text'
));
Para que nos convierta la fecha al formato de mysql tenemos que ponerlo en el beforesave del modelo:
public function beforeSave($options = array()) {
if (isset($this->data['Autor']['fecha'])) {
$this->data['Autor']['fecha'] = date("Y-m-d", strtotime($this->data['Autor']['fecha']));
}
}
public function afterFind($results, $primary = false) {
foreach ($results as $key => $val) {
if (isset($results[$key]['Autor']['fecha'])) {
$results[$key]['Autor']['fecha'] = date("d-m-Y", strtotime($results[$key]['Autor']['fecha']));
}
}
return $results;
}