问题描述
我知道有一些类似的问题,我已经尝试应用他们的解决方案,但它仍然没有显示 daysToDeliver 属性的旧数据。我认为这是因为我没有设法在 echo
中正确使用它。
<select name="daysToDeliver"
class="form-control @error('daysToDeliver') is-invalid @enderror"required>
<?PHP
$start_date = 1;
$end_date = 90;
for( $j=$start_date; $j<=$end_date; $j++ ) {
echo '<option value='.$j.'>'.$j.'</option>';
}
?>
</select>
是否有任何想法将旧数据显示为选定选项?
解决方法
您可以像这样使用旧功能。
<select name="daysToDeliver"
class="form-control @error('daysToDeliver') is-invalid @enderror"required>
<?php
$start_date = 1;
$end_date = 90;
$selected = null;
for( $j=$start_date; $j<=$end_date; $j++ ) {
if(old('daysToDeliver') == $j){
$selected = ' selected';
}
echo '<option value='".$j.".$selected.'>'.$j.'</option>';
$selected = null;
}
?>
</select>
,
Laravel 支持指令的更高版本。所以最好避免使用php标签。 你可以试试这个代码:
<select name="daysToDeliver"
class="form-control @error('daysToDeliver') is-invalid @enderror" required>
@for ($i = 1; $i <= 90; $i++)
<option value="{{$i}}" {{(old('daysToDeliver') == $i) ? 'selected': ''}} >{{$i}}</option>';
@endfor
</select>
,
您似乎在使用 Laravel
,请注意 @error
Blade
指令,它应该会让我们的生活更轻松。
当您使用 Laravel
时,您可以使用其内置的 old
辅助函数,它完全符合您的要求。
基本上,old
通过其键(即表单元素的 name
属性)从最后一次请求返回表单元素的值。例如,要从您的 select
元素中获取所选项目,您只需执行 old('daysToDeliver')
,然后您将获得用户选择的项目或 null
* 如果没有选择任何元素。
*:我们可以通过传递我们想要的返回值作为 old
函数的第二个参数来改变默认行为,如果元素
在上次请求中找不到。所以,old('form_element_name',5)
将返回 5
,而不是 null
,如果 form_element_name
键不能
被发现。
为了回答您的问题,这里有一个简单的解决方案:
<select name="daysToDeliver" class="form-control @error('daysToDeliver') is-invalid @enderror" required>
<?php
$start_date = 1;
$end_date = 90;
for( $j=$start_date; $j<=$end_date; $j++ ) {
echo '<option value="'.$j.'" '.(old('daysToDeliver') == $j ? 'selected':'').'>'.$j.'</option>';
}
?>
</select>
请注意,old('daysToDeliver') == $j ? 'selected':''
部分将选择用户在提交 form
时选择的项目。
无论如何,为了简单起见,可以使用 Blade
改进答案
指令而不是直接注入 php
块。