and*_*ber 5 forms formbuilder laravel laravel-4
我正在创建一个"日"选择下拉列表.使用selectRange我可以这样做:
{{ Form::selectRange('day', 1, 31, $day) }}
Run Code Online (Sandbox Code Playgroud)
问题是,当表单加载时,如果$day未设置,则1默认选择.是否可以使用selectRange为它们提供具有NULL值的"请选择"选项?
小智 6
如果要修改选项值,请使用带有 range 和 array_combine 的表单选择:
{{ Form::select('month', array('all' => 'all') + array_combine(range(1,12),range(1,12)) ) }}
Run Code Online (Sandbox Code Playgroud)
小智 5
请改用Form :: select.
{{ Form::select('day', array('' => 'Please Choose...') + range(1,31)) }}
Run Code Online (Sandbox Code Playgroud)
小智 2
我不相信有办法通过内置的 selectRange 来实现这一点,但是可以使用表单宏。以下宏大致执行您正在寻找的内容,但可能需要一些清理。
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);
});
Run Code Online (Sandbox Code Playgroud)
用法如下:
{{ Form::selectRangeWithDefault('day', 1, 31, $day, 'Please Choose...') }}
Run Code Online (Sandbox Code Playgroud)
请注意,我的代码的想法和基础来自:/sf/answers/1754878961/
| 归档时间: |
|
| 查看次数: |
4131 次 |
| 最近记录: |