2014-10-05 80 views
0

请帮我从这个自定义选择宏,我已经从这website。当您添加小于最终值的起始值时,此代码工作正常。Laravel自定义窗体选择宏

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

如果你的startvalue比你的endvalue大,你设置'start = end'和'end = start'。如果您想(需要)从开始循环到结束值,则需要每次增加'1'。但是,如果将间隔设置为'-1',并且从startvalue开始(现在小于endvalue),则循环将永不停止。

变化

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 2015-02-27 07:57:16