Hab zwar noch kein ActiveDateField-ähnliches gefunden, mir aber eines (sehr unelegant) selbst gestrickt:
views/post/_form.php:
<div class="row">
<?php echo CHtml::activeLabel($post,'createTime'); ?>
<?php echo $post->chooseDate($post->createTime, 'createTime'); ?>
</div>
<div class="row">
<?php echo CHtml::activeLabel($post,'updateTime'); ?>
<?php echo $post->chooseDate($post->updateTime, 'updateTime'); ?>
</div>
models/Post.php:
<?php
public function chooseDate($timestamp = "", $prefix){
if($timestamp == ""){
$timestamp = time();
}
$months = array(null, 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
unset($months[0]);
$out = '<select name="' .$prefix . 'month">';
foreach($months as $key => $month){
if($key == date('m', $timestamp)){
$out .= '<option value="'.$key.'" selected="selected">'.$month.'</option>';
}else{
$out .= '<option value="'.$key.'">'.$month.'</option>';
}
}
$out .= '</select><select name="' . $prefix . 'days">';
for($i = 1; $i <= 32; $i++){
if($i == date('j', $timestamp)){
$out .= '<option value="'.$i.'" selected="selected">'.$i.'</option>';
}else{
$out .= '<option value="'.$i.'">'.$i.'</option>';
}
}
$out .= "</select><select name='" . $prefix . "year'>";
for($i = date('Y'); $i >= 1970; $i--){
if($i == date('Y', $timestamp)){
$out .= '<option value="'.$i.'" selected="selected">'.$i.'</option>';
}else{
$out .= '<option value="'.$i.'">'.$i.'</option>';
}
}
$out .= "</select>";
return $out;
?>
}
controllers/PostController.php:
<?php
public function actionUpdate()
{
$post=$this->loadPost();
if(isset($_POST['Post']))
{
$post->attributes=$_POST['Post'];
$timestamp_createTime = mktime(0,0,0,$month = $_POST['createTimemonth'], $year = $_POST['createTimedays'], $day = $_POST['createTimeyear']);
$timestamp_updateTime = mktime(0,0,0,$month = $_POST['updateTimemonth'], $year = $_POST['updateTimedays'], $day = $_POST['updateTimeyear']);
$post->createTime = $timestamp_createTime;
$post->updateTime = $timestamp_updateTime;
if(isset($_POST['previewPost']))
$post->validate();
else if(isset($_POST['submitPost']) && $post->save())
$this->redirect(array('show','id'=>$post->id));
}
$this->render('update',array('post'=>$post));
}
?>