Cakephp ctp创建表单输入 - php

时间:2010-02-05 14:52:23

标签: list cakephp forms input

我正在使用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],但重复了..

如何选择列表中的月份,该月份显示在当前??

2 个答案:

答案 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字段。

read more about automagic form elements