7

我有一个系统,我需要为一周中的每一天列出任意数量的员工,其中可以输入“工作时间”值。

所以我需要生成一个动态行数的表,每行将包含 7 个文本字段。我只是想知道在将 ID 分配给这些字段时使用的最佳约定是什么,以便在我在后端收到输入数据后轻松迭代?

每行都有一个与代表员工 ID 的行相关联的 ID 号。

能够做类似的事情会很棒:

foreach($rows as $row)
{
     $id = $row['id'];

     $employee = Employee::find($id);

     foreach($row['hoursWorked'] as $dailyHours)
     {
           $timecard = new Timecard();
           $timecard->hours = $dailyHours;
           $employee->timecards->insert($timecard);
     }
}

在 HTML 端构建表单和 ID 输入以使其尽可能轻松的最佳方式是什么?

作为旁注,我正在 Laravel 3 框架内工作,以防打开任何其他解决方案。

4

2 回答 2

13

<input type="text" name="hoursWorked[]" />将在内部转换为$_POST['hoursWorked']. 这意味着您可以执行以下操作:

<input type="text" name="hoursWorked[12345][]" /> <!-- Sunday -->
<input type="text" name="hoursWorked[12345][]" /> <!-- Monday -->
<input type="text" name="hoursWorked[12345][]" /> <!-- Tuesday -->
<input type="text" name="hoursWorked[12345][]" /> <!-- Wednesday -->
<input type="text" name="hoursWorked[12345][]" /> <!-- Thursday -->
<input type="text" name="hoursWorked[12345][]" /> <!-- Friday -->
<input type="text" name="hoursWorked[12345][]" /> <!-- Saturday -->

然后,在 PHP 中:

<?php
foreach ($_POST['hoursWorked'] as $employeeId=>$dayArray) {
    foreach ($dayArray as $dayOfWeek=>$hoursWorked) {
        // $employeeId will be 12345
        // $dayOfWeek will be 0, 1, 2, 3, 4, 5 ,6
        // $hoursWorked will be the value of the text field
    }
}
于 2013-04-04T19:27:52.440 回答
1

我从未使用过 Laravel 框架,但通常我在 PHP 中执行此操作:

foreach ($employee as $key=>$e) {
   echo '<input type="text" name="hours[]" id="hours_'.$key.'" value="'.$e.'" />';
}

这样,您将在 POST 中有一个小时值数组,如果需要,您可以通过 id 引用相应的字段。第一个字段将具有 id="hours_1" 等。或者,如果您不想使用查询中的 $key,您可以这样做:

$cntr = 1;
foreach ($employee as $e) {
   echo '<input type="text" name="hours[]" id="hours_'.$cntr.'" value="'.$e.'" />';
   $cntr++;
}

当您捕获 POST 中的值时,您将在$_POST['hours']. 请记住,它是一个从零开始的数组,但您可以使用 foreach 循环遍历这些值。

于 2013-04-04T19:29:07.047 回答