Laravel自定义表单选择宏

时间:2014-10-05 02:06:17

标签: php laravel laravel-4

请帮助我使用此website中的自定义选择宏。将起始值小于结束值时,此代码正常工作。

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);
});

当从起始值添加大于值且在结束值中添加更少时,它会中断。请帮我解决这个代码的问题

1 个答案:

答案 0 :(得分:0)

如果您的起始值大于您的结束值,则设置'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;

让它发挥作用。

编辑:解释