单选字段列表仅给出 laravel 中的最后一个值
Radio field list giving only last value in laravel
我有一个带有一些值(从 1 到 5)的单选字段,我基本上需要它来检索用户的输入值。我将它放在 blade 模板中的 foreach 循环中,但是当我尝试检索该值时,它只获取 for 循环的最后一个值(在本例中为 5)。即使我 select 其他值它总是得到值 5。
这里有一些代码。
$gradings = range(1, 5);
模板
@foreach ($learning_objectives as $key=> $lo)
<tr>
<td id="learning_obj">{{ $lo->name }}</td>
@foreach ($gradings as $grade)
<td>
<input name="grade{{ $lo->name }}" type="radio" id="radio{{ $grade }}" class="form-check {{ $grade }}" value="{{$grade}}" required="">
<label for="radio{{ $grade }}"></label>
<input type="hidden" name="grade[{{ $key }}]" value="{{ $grade }}">
</td>
@endforeach
<td>
<input type="text" class="form-control" name="note[]" id="note" />
</td>
</tr>
@endforeach
控制器
$grade_list = $request->grade; //probably that is the main issue, but I don't know how to get this value
$fail = $request->fail;
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($learning_objectives));
$mi->attachIterator(new ArrayIterator($note));
$mi->attachIterator(new ArrayIterator($grade_list));
foreach ($mi as $value) {
list($lo, $n, $g) = $value;
$mission_entry = new MissionEntry();
$mission_entry->learning_objective_id = $lo['id'];
$mission_entry->grade = $g; //this value is always stored as 5, even though I select other values
$mission_entry->comment = $n;
$mission_entry->student_id = $student->id;
$mission_entry->mission_id = $mission_id;
$mission_entry->log_entry_id = $log_entry->id;
$mission_entry->save();
}
我回答我自己的问题,因为最终我找到了答案。它可能对任何有类似情况的人都有用。
基本上,我删除了隐藏的输入并使用单选字段的名称字段。问题是在名称字段中我有一些带有 space 的变量,所以我必须找到一个非常冗长的解决方案。
模板
@foreach ($mission_entry as $key=> $lo)
<tr>
<td id="learning_obj">{{ $lo->learning_objective->name }}</td>
@foreach ($gradings as $grade)
<td>
<input name="grade{{ str_replace(' ', '', $lo->learning_objective->name) }}" {{ ($grade == $lo->grade) ? 'checked' : '' }} type="radio" id="radio{{ $grade }}" class="form-check {{ $grade }}" value="{{$grade}}" required="">
<label for="radio{{ $grade }}"></label>
</td>
@endforeach
<td>
<input type="text" value="{{ $lo->comment }}" class="form-control" name="note[]" id="note" />
</td>
</tr>
@endforeach
首先,我删除了输入名称中的 space。
$grade_list = array();
foreach ($learning_objectives as $key => $lo) {
$string = $lo['name'];
$string = str_replace(' ', '', $string);
$grade_list[] = 'grade' . $string;
}
这会创建一个数组,其中的名称没有任何 space 最后但并非最不重要的是,我可以检索值。
foreach ($grade_list as $key => $g) {
$grades[] = $request->$g;
}
希望有人觉得有用。
我有一个带有一些值(从 1 到 5)的单选字段,我基本上需要它来检索用户的输入值。我将它放在 blade 模板中的 foreach 循环中,但是当我尝试检索该值时,它只获取 for 循环的最后一个值(在本例中为 5)。即使我 select 其他值它总是得到值 5。 这里有一些代码。
$gradings = range(1, 5);
模板
@foreach ($learning_objectives as $key=> $lo)
<tr>
<td id="learning_obj">{{ $lo->name }}</td>
@foreach ($gradings as $grade)
<td>
<input name="grade{{ $lo->name }}" type="radio" id="radio{{ $grade }}" class="form-check {{ $grade }}" value="{{$grade}}" required="">
<label for="radio{{ $grade }}"></label>
<input type="hidden" name="grade[{{ $key }}]" value="{{ $grade }}">
</td>
@endforeach
<td>
<input type="text" class="form-control" name="note[]" id="note" />
</td>
</tr>
@endforeach
控制器
$grade_list = $request->grade; //probably that is the main issue, but I don't know how to get this value
$fail = $request->fail;
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($learning_objectives));
$mi->attachIterator(new ArrayIterator($note));
$mi->attachIterator(new ArrayIterator($grade_list));
foreach ($mi as $value) {
list($lo, $n, $g) = $value;
$mission_entry = new MissionEntry();
$mission_entry->learning_objective_id = $lo['id'];
$mission_entry->grade = $g; //this value is always stored as 5, even though I select other values
$mission_entry->comment = $n;
$mission_entry->student_id = $student->id;
$mission_entry->mission_id = $mission_id;
$mission_entry->log_entry_id = $log_entry->id;
$mission_entry->save();
}
我回答我自己的问题,因为最终我找到了答案。它可能对任何有类似情况的人都有用。 基本上,我删除了隐藏的输入并使用单选字段的名称字段。问题是在名称字段中我有一些带有 space 的变量,所以我必须找到一个非常冗长的解决方案。
模板
@foreach ($mission_entry as $key=> $lo)
<tr>
<td id="learning_obj">{{ $lo->learning_objective->name }}</td>
@foreach ($gradings as $grade)
<td>
<input name="grade{{ str_replace(' ', '', $lo->learning_objective->name) }}" {{ ($grade == $lo->grade) ? 'checked' : '' }} type="radio" id="radio{{ $grade }}" class="form-check {{ $grade }}" value="{{$grade}}" required="">
<label for="radio{{ $grade }}"></label>
</td>
@endforeach
<td>
<input type="text" value="{{ $lo->comment }}" class="form-control" name="note[]" id="note" />
</td>
</tr>
@endforeach
首先,我删除了输入名称中的 space。
$grade_list = array();
foreach ($learning_objectives as $key => $lo) {
$string = $lo['name'];
$string = str_replace(' ', '', $string);
$grade_list[] = 'grade' . $string;
}
这会创建一个数组,其中的名称没有任何 space 最后但并非最不重要的是,我可以检索值。
foreach ($grade_list as $key => $g) {
$grades[] = $request->$g;
}
希望有人觉得有用。