我正在使用cakephp创建一个日历程序 当使用月份和年份调用方法disp作为参数时,它应该显示日历..
这是我的index.ctp // $ month int 1 to 12 // $ mon [12] =='December'
<?php echo $form->create('Calendar', array('action' => 'disp', 'class' => 'normal')); ?>
<?php
echo $form->input('month', array('options' => $mon, 'empty'=>$mon[$month]));
echo $form->input('year', array('options' => $yr, 'empty' => $year));
?>
<?php echo $form->end('Submit'); ?>
月包含jan到dec和1990年到2010年
这是disp方法
function disp()
{
$month= $this->data['Calendar']['month'];
$year= $this->data['Calendar']['year'];
$this->redirect(array('controller' => 'calendars', 'action' => 'index',$month,$year));
}
调用函数时,它会完美地显示日历
我的概率是应该在下拉列表中选择的加载月份
默认情况下,它显示第一个值
我在月份使用了'empty'=>$mon[$month]
,但重复了..
如何选择列表中的月份,该月份显示在当前??
答案 0 :(得分:0)
我不确定我是否纠正你。您想显示包含可用月/年的2个选择框并预选当前月/年?!
如果是这样,我建议使用select-function而不是input
$form->label('Calender.month', __('month', true));
$form->select('Calender.month', $mon, $month, array('class'=>'normal'), false);
http://api.cakephp.org/class/form-helper#method-FormHelperselect
答案 1 :(得分:0)
您应该使用内置日期表单元素
看看这个
http://book.cakephp.org/view/204/Form-Element-Specific-Methods
echo $form->month('month');
echo $form->year('year');
或者您可以使用
echo $form->dateTime('date');
我认为如果你这样做: -
echo $form->input('date',array('dateFormat' => 'MY'));
它会产生两个下拉菜单。
cakephp倾向于猜测字段的数据类型。它由你的字段名称来做,例如,如果字段名称是'id',它将始终为它生成一个隐藏字段。 cakephp还会查看数据库的模式,并根据数据类型生成表单元素。对于tinyint,它将生成一个复选框。你需要做的就是
$form->input('visible');
其中visible是一个tinyint字段。