4

我创建了一个表单,它有一个循环来显示多行。我使用表单助手在每一行上都有一个选择。它创建的 ID 都是一样的,有没有办法给 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>';
}
4

3 回答 3

3

正如itchy 指出的那样,只需在while循环中使用计数器即可获得唯一编号。

然后您所要做的就是将其分配给您的 ID 字段

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

假设$i在您的循环中定义。

于 2011-03-02T06:09:20.480 回答
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++;
}
于 2011-03-02T05:46:00.380 回答
1

如果 id 相同,则名称也相同。这会在您提交时弄乱您的数据。您正在寻找这种语法:

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

使用ModelName您正在为其制作表单的 (即与 中的相同$this->Form->create('ModelName'))。

于 2011-03-02T07:18:10.390 回答