在CakePHP中,如何创建一个表单来列出日期范围内的模型?

在CakePHP中,如何创建一个表单来列出日期范围内的模型?,php,datetime,cakephp,Php,Datetime,Cakephp,我有一个非常简单的模型,其中包括自动填充字段,非常类似于“created”。(日期时间格式) 如果可能的话,我想使用表单助手来验证日期字段等等 我想要一个带有“开始日期”(YMD,12小时)和“结束日期”(相同格式)的简单表单 已经设置了控制器操作,如下所示: function view_between($start_date = null, $end_date = null) { // ... stuff that works correctly when the URL is ma

我有一个非常简单的模型,其中包括自动填充字段,非常类似于“created”。(日期时间格式)

如果可能的话,我想使用表单助手来验证日期字段等等

我想要一个带有“开始日期”(YMD,12小时)和“结束日期”(相同格式)的简单表单

已经设置了控制器操作,如下所示:

function view_between($start_date = null, $end_date = null) { 
    // ... stuff that works correctly when the URL is manually entered.
}
我是否定义了错误的控制器,或者如何将这些值传递到该函数中

我陷入困境的原因是,我尝试添加了两次
$form->input('my_datetime_field')
,但很明显,各个元素上的名称/id是相同的

我还尝试过使用
$form->dateTime(…)
获得类似的结果

我不知道如何唯一地识别开始和结束日期选择,当它应该与单个字段交互时


我做错了吗?朝着正确的方向轻轻一推就足够了

您可以执行一个onsubmit,该onsubmit形成一个附加开始/结束日期的get请求:

echo $form->create('Foos', array('onsubmit'='submitDates(this)'));
javascript:

function submitDates(frm) {
    // grab dates from inputs, form get string and submit to form.action
    // get should be something like /controller/view_between/YYYY-MM-DD/YYYY-MM-DD
}

要使用相同的字段名指定多个表单元素,请使用以下语法:

$form->input('Modelname.0.fieldname');
$form->input('Modelname.1.fieldname');
它应该返回一个要使用的值数组


发件人:

提交表单时,您只能以GET或POST请求的形式提交表单。
GET请求将以如下格式将所有表单元素附加到URL:

/controller/action?data[Model][field]=value&data[Model][field2]=value
这与Cake URL标准不符,因此无论如何,您都必须进行一些URL重写或解析

POST请求只是,数据将像往常一样在控制器中的
$this->data
中结束


无论哪种方式,都不能直接将表单请求馈送到带有参数的函数中。你可以使用Javascript,但我建议你不要。最好的可能是通常的POST请求。您只需重写控制器操作即可从
$this->data
获取数据。无论您想如何命名表单字段,只要确保在控制器操作中正确使用它们即可。

这远不如我所希望的那么优雅,但我最终就是这么做的。