2011-03-02 40 views
2

我創建了一個表單,它有一個循環來顯示多行。我使用表單助手在每一行上都有一個選擇。它創建的ID是一樣的,有沒有辦法添加一個計數器,或一些定義信息的ID?cakePHP:如何更改表單元素的ID(使用表單助手)?

我使用$this->Form->input('city_id')來輸出從我的城市模型中選擇的城市。所有ID都是ModelCityId。我想獲得像ModelCityId1,ModelCityId2ModelCityId3等,這可能嗎?還是有更好的方式去顯示循環中的選項?

感謝您的任何建議。

這裏是代碼的相關部分。

while ($current_date != $departure_date) { 
    $current_date = date("d-M-y", strtotime($current_date . " +1 day")); 
    $output .= '<tr>'; 
    $output .= '<td>'.$current_date.'</td>'; 
    // irrelevant other columns 
    $output .= '<td>'.$this->Form->input('city_id', array('label' => '', 'empty' => true)).'</td>'; 
    $output .= '</tr>'; 
} 
+0

'$ current_date = date(「d-M-y」,strtotime(date(「Y-m-d」,strtotime($ current_date))。「+1 day」));' 這條線讓我感到困惑。 – Dunhamzzz 2011-03-02 09:12:29

+0

可能有更好的方法來做到這一點,但我用它來添加一天到日期字符串(從網站的另一部分,已經格式化)。 - 仔細一看,意識到我過了一會兒就變得複雜了。更改爲'$ current_date = date(「d-M-y」,strtotime($ current_date。「+1 day」));' – 2011-03-02 21:22:55

回答

1

如果id相同,名稱也是一樣的。這會在您提交數據時混淆您的數據。您正在尋找這樣的語法:

$this->Form->input("ModelName.$i.city_id", array(...)) 

使用,你正在做的形式(即相同$this->Form->create('ModelName'))的ModelName

1

編輯:你爲什麼不能做這樣的事情:

$counter = 0; 
while ($current_date != $departure_date) { 
    $current_date = date("d-M-y", strtotime(date("Y-m-d", strtotime($current_date)) . " +1 day")); 
    $output .= '<tr>'; 
    $output .= '<td>'.$current_date.'</td>'; 
    // irrelevant other columns 
    $output .= '<td>'.$this->Form->input('city_id' . $counter, array('label' => '', 'empty' => true)).'</td>'; 
    $output .= '</tr>'; 
    $counter++; 
} 
+0

感謝您的想法@ithcy。我已將代碼添加到原始帖子中。我認爲改變必須通過輸入函數的選項來完成,我只是不確定要查找什麼。 – 2011-03-02 06:00:16

+0

看我的編輯。它可能不符合CakePHP的模型綁定或其他類型的字段命名約定,但我不明白爲什麼它不起作用。 – glomad 2011-03-02 06:03:33

+0

啊......我現在看到了。我不太瞭解CakePHP。我會試着想出一個更好的答案。 – glomad 2011-03-02 06:07:13

3

由於發癢指出,簡單地用一個計數器在while環獲得一個唯一的編號。

然後,所有你需要做的就是把它分配給您的ID字段

$this->Form->input('city_id', array('id' => 'somvalue' . $i)); 

假設$i在循環定義。

+0

當我瀏覽蛋糕文檔時,我沒有看到ID是我可以設置的選項,所以我甚至都沒有想過嘗試。它的工作,謝謝你們。 – 2011-03-02 06:44:39

+0

Cake僅列出您可以設置的其他選項(例如 - 默認,之後,之前)。但是,除了類,id,名稱等所有html選項外,還可以在該選項數組中設置名稱。 – JohnP 2011-03-02 06:49:21

+0

很高興知道,感謝提示@JohnP – 2011-03-02 21:25:21

相關問題