我有一个系统,我需要列出一个任意数量的员工,其中包含一周中每天可以输入“工作小时数”值的文本字段。
所以我需要生成一个动态行数的表,每行将包含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框架内工作,以防任何其他解决方案。
答案 0 :(得分: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
}
}
答案 1 :(得分: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循环来遍历值。