cakePHP:如何更改表单元素的ID(使用表单助手)?

我创建了一个表单,其中有一个循环来显示多行。我使用表单助手在每一行上有一个选择。它创建的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>';
}
    
已邀请:
如果id相同,则名称也相同。当你提交数据时,这会弄乱你的数据。您正在寻找这种语法:
$this->Form->input("ModelName.$i.city_id", array(...))
使用你正在制作表格的
ModelName
(即与
$this->Form->create('ModelName')
相同)。     
正如痒指出的那样,只需在
while
循环中使用计数器即可获得唯一的数字。 然后,您所要做的就是将其分配给您的ID字段
$this->Form->input('city_id', array('id' => 'somvalue' . $i));
假设你的循环中定义了
$i
。     
编辑:为什么你不能做这样的事情:
$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++;
}
    

要回复问题请先登录注册