2014-10-05 3 views
0

Пожалуйста, помогите мне с этим настраиваемым макросом, который у меня есть от этого website. Этот код работает нормально, когда вы добавляете начальное значение меньше конечного значения.Laravel Custom Form Select Macro

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[''] = $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); 
}); 

При добавлении большего значения от начального значения и менее в конечном значении оно ломается. Пожалуйста, помогите мне исправить этот код ребята

ответ

0

Если ваше начальное значение больше вашего конечного значения, вы устанавливаете 'start = end' и 'end = start'. Если вы хотите (нужно) зациклиться от начала до конечного значения, вам нужно каждый раз увеличивать его с помощью «1». Однако, если вы установите интервал в «-1», и вы начинаете с вашего начального значения (которое теперь меньше конечного значения), ваш цикл никогда не останавливается.

изменение

if($start > $end) { 
$interval = -1; 
$startValue = $end; 
$endValue = $start; 

в

if($start > $end) { 
$interval = 1; 
$startValue = $end; 
$endValue = $start; 

, чтобы заставить его работать.

редактировать: объяснение

+1

Хотя это может ответить на этот вопрос, это всегда хорошая идея, чтобы поставить некоторые текст в ответ, чтобы объяснить, что вы делаете. Прочитайте [как написать хороший ответ] (http://stackoverflow.com/help/how-to-answer). – jurgemaister