我创建了一个表单,它有一个显示多行的循环。我使用表单助手在每一行上有一个选择。它创建的ID都是相同的,有没有办法添加计数器,或者一些定义信息到ID?
我正在使用$this->Form->input('city_id')
从我的城市模型中输出一些城市。所有ID均为ModelCityId
。我想得到像ModelCityId1,ModelCityId2
,ModelCityId3
等等。这可能吗?或者有更好的方法来循环显示选项吗?
感谢你提出的任何建议。
以下是代码的相关部分。
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 :(得分:3)
正如痒指出的那样,只需在while
循环中使用计数器即可获得唯一的数字。
然后,您所要做的就是将其分配到您的ID字段
$this->Form->input('city_id', array('id' => 'somvalue' . $i));
假设你的循环中定义了$i
。
答案 1 :(得分: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++;
}
答案 2 :(得分:1)
如果ID相同,则名称也相同。当你提交数据时,这会弄乱你的数据。您正在寻找这种语法:
$this->Form->input("ModelName.$i.city_id", array(...))
使用您制作表单的ModelName
(即与$this->Form->create('ModelName')
中的相同)。