2010-05-14 35 views
0

我有一個非常簡單的模型,其中包含非常像'created'的自動填充字段。 (日期時間格式)。在CakePHP中,如何創建表單以在日期範圍內列出模型?

如果可能,我想使用表單助手來驗證日期字段和內容。

我想要一個帶有「開始日期」(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(...)以類似的結果。

我不知道如何唯一標識開始和結束日期選擇,它應該與單個字段進行交互。

我是否在談論這個錯誤?一種正確的方向應該足夠了。

回答

1

指定使用相同的字段名稱的多個表單元素,使用該語法:

$form->input('Modelname.0.fieldname'); 
$form->input('Modelname.1.fieldname'); 

這應該返回一個值的數組使用。

來源:http://book.cakephp.org/view/547/Field-naming-convention

+0

這種方式不如我希望的那麼優雅,但這是我最終做的。 – 2010-05-24 15:20:01

0

你能做到這一點形成了附加的開始/結束日期的GET請求的的onsubmit:

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 
} 
0

當提交表單,你只能提交GET或POST請求。
GET請求將連接所有的表單元素的URL在這樣的格式:

/controller/action?data[Model][field]=value&data[Model][field2]=value 

不對應於蛋糕網址的標準,所以你必須做一些URL重寫或反正解析。

POST請求就是這樣,數據將像往常一樣在控制器中的$this->data中結束。

無論哪種方式,您都無法直接將表單請求提供給具有參數的函數。你可能使用Javascript,但我建議你不應該。最好的可能是通常的POST請求。您只需重寫您的控制器操作即可從$this->data獲取數據。只要確保在控制器操作中正確使用表單字段,就可以命名錶單字段。