我有一个非常简单的模型,包括自动填充的字段,就像'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(...)
类似的结果。
我不确定如何唯一地标识开始和结束日期选择,当它应该与单个字段交互时。
我是不是错了?向正确的方向推进就足够了。
答案 0 :(得分:1)
要指定具有相同字段名称的多个表单元素,请使用以下语法:
$form->input('Modelname.0.fieldname');
$form->input('Modelname.1.fieldname');
哪个应该返回一组要使用的值。
答案 1 :(得分:0)
您可以执行一个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
}
答案 2 :(得分:0)
提交表格时,您只能将其作为GET或POST请求提交 GET请求将以如下格式将所有表单元素附加到URL:
/controller/action?data[Model][field]=value&data[Model][field2]=value
这与Cake URL标准不符,因此您无论如何都必须进行一些URL重写或解析。
POST请求就是这样,数据将像往常一样在控制器的$this->data
中结束。
无论哪种方式,您都无法直接将表单请求提供给带参数的函数。你可以使用Javascript,但我建议你不要。最好的可能是通常的POST请求。您只需重写控制器操作即可从$this->data
获取数据。根据需要为表单字段命名,只需确保在控制器操作中正确使用它们。