Я хотел бы создать поле в Laravel с атрибутом select range
{{ Form::selectRange('number', 1, 1500000) }}
Я хотел бы, чтобы диапазон находился между 1 и 1500000 с шагом шага приращения 50000
В настоящее время, когда я создаю это, он просто создает супер длинное поле выбора с шагом 1
Для этого я создал макрос формы, в основном расширяя существующий макрос selectRange:
class FormBuilder extends FB { public function selectRangeWithInterval($name, $start, $end, $interval, $default = null, $attributes = []) { if ($interval == 0) { return $this->selectRange($name, $start, $end, $default, $attributes); } $items = []; $startValue = $start; $endValue = $end; if ($interval < 0) { $interval *= -1; } if ($start > $end) { if ($interval > 0) { $interval *= -1; } $startValue = $end; $endValue = $start; } for ($i=$startValue; $i<$endValue; $i+=$interval) { $items[$i . ""] = $i; } $items[$endValue] = $endValue; if (!in_array($default, $items)) { $items[$default] = $default; } return $this->select($name, $items, $default, $attributes); } }
Это можно затем использовать в вашем представлении примерно так:
{{ Form::selectRangeWithInterval('weightOfSackOfFeathers', 0, 7500, 150, null, ['class' => 'form-control input-xs']) }}
Я сделал это с использованием прямого php, потому что AFAIK laravel пока не поддерживает шаги с selectrange.
<select name="min_price" class="form-control"> <?php for ($i = 1; $i <= 15; $i++) : ?> <option value="<?php echo $i*10000; ?>"><?php echo number_format($i*10000); ?></option> <?php endfor; ?> e(Input::get('min_price'))</select>