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

时间:2011-03-02 05:34:15

标签: php cakephp formhelper

我创建了一个表单,它有一个显示多行的循环。我使用表单助手在每一行上有一个选择。它创建的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>';
}

3 个答案:

答案 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')中的相同)。