我正在创建一个“天”选择下拉列表。使用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/

10-10 15:26