我正在创建一个“天”选择下拉列表。使用selectRange可以做到这一点:
{{ Form::selectRange('day', 1, 31, $day) }}
问题是,在加载表单时,如果未设置
$day
,则默认情况下会选择1
。是否可以使用selectRange为他们提供具有NULL值的“请选择”选项? 最佳答案
我不相信可以通过内置的selectRange实现此目的,但是可以使用form macros来实现。以下宏可以大致执行您要查找的内容,尽管可能需要进行一些清理。
Form::macro('selectRangeWithDefault', function($name, $start, $end, $selected = null, $default = null, $attributes = [])
{
if ($default === null) {
return Form::selectRange($name, $start, $end, $selected, $attributes);
}
$items = [];
if (!in_array($default, $items)) {
$items['NULL'] = $default;
}
if($start > $end) {
$interval = -1;
$startValue = $end;
$endValue = $start;
} else {
$interval = 1;
$startValue = $start;
$endValue = $end;
}
for ($i=$startValue; $i<$endValue; $i+=$interval) {
$items[$i . ""] = $i;
}
$items[$endValue] = $endValue;
return Form::select($name, $items, isset($selected) ? $selected : $default, $attributes);
});
用法如下:
{{ Form::selectRangeWithDefault('day', 1, 31, $day, 'Please Choose...') }}
请注意,我从https://stackoverflow.com/a/25069699/3492098获得了代码的想法和基础。
关于forms - Laravel selectRange空白选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25278630/