【问题标题】:cakePHP: How to change the ID of a form element (using the form helper)?cakePHP:如何更改表单元素的 ID(使用表单助手)?
【发布时间】:2011-03-02 05:34:14
【问题描述】:

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

【问题讨论】:

  • $current_date = date("d-M-y", strtotime(date("Y-m-d", strtotime($current_date)) . " +1 day")); 这行让我很困惑。
  • 可能有更好的方法,但我正在使用它在日期字符串中添加一天(来自网站的另一个部分,已经格式化)。 - 仔细观察,意识到我有点过于复杂了。改为$current_date = date("d-M-y", strtotime($current_date . " +1 day"));

标签: php cakephp formhelper


【解决方案1】:

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

那么你所要做的就是将它分配给你的 ID 字段

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

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

【讨论】:

  • 当我浏览蛋糕文档时,我没有将 ID 视为可以设置的选项,所以我什至没有想过尝试这样做。成功了,谢谢大家。
  • Cake 仅列出您可以设置的其他选项(例如 - 默认、之后、之前)。但是,除了那些所有的 html 选项,如 class、id、name 也可以在该选项数组中设置。
【解决方案2】:

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

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

使用您为其创建表单的ModelName(即与$this-&gt;Form-&gt;create('ModelName') 中的相同)。

【讨论】:

    【解决方案3】:

    编辑:为什么你不能这样做:

    $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++;
    }
    

    【讨论】:

    • 感谢@ithcy 的想法。我已将代码添加到我的原始帖子中。我认为必须通过输入功能的选项进行更改,我只是不确定要查找什么。
    • 查看我的编辑。它可能不符合 CakePHP 的模型绑定或其他字段命名约定,但我不明白为什么它不应该工作。
    • 啊...我现在明白了。我不太了解 CakePHP。我会尽力想出一个更好的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多