用文本间隔替换数字间隔

时间:2015-09-16 10:45:11

标签: php laravel text intervals

我一直在编辑和清理我工作的公司的会计应用程序上的代码。当用户注册时,他们会告诉我们检查其帐户的新信息的频率。目前,它根据注册日期使用1到30天的数字下拉列表。代码如下。

<div class="{{ $class }}">
                        <label for="syst_interval">How often do you want us to scan your account?</label>

                        <?php $value = ($user->syst_settings->syst_interval) ?: Input::old('syst_interval'); ?>
                        <select name="syst_interval" id="syst_interval" class="form-control">
                            <option value="0">Select value</option>
                            @for( $i=0; $i<30; $i++ )
                                <?php if( $value == ($i+1) ) $selected = 'selected'; else $selected = false; ?> 
                                <option value="{{$i+1}}" {{$selected}}>{{$i+1}}</option>
                            @endfor
                        </select>

                        @if( $errors->has('syst_interval') )
                            @foreach( $errors->get('syst_interval') as $error )
                                <span class="help-block">{{ $error }}</span>
                            @endforeach
                        @endif
                    </div>

我们想要做的是将间隔更改为以下选项:每天(1),每周(7),每两周(14)和每月(28)。 最好的方法是什么?我意识到,如果没有对某些代码进行重大改进,这可能是不可能的。 感谢

2 个答案:

答案 0 :(得分:0)

由于您的选项已基于数值,为什么不写出选项?

tuple

无论如何,可用的选项都是硬编码的,for循环只是为了方便,不需要任何花哨的动态东西:)

如果你真的讨厌这种方式,那就定义一个数组并对其进行预测,例如:

<select name="syst_interval" id="syst_interval" class="form-control">
  <option value="0">Select value</option>
  <option<?php if($value == 1) echo ' selected="selected"' ?> value="1">Every day</option>
  <option<?php if($value == 7) echo ' selected="selected"' ?> value="7">Every week</option>
  <option<?php if($value == 14) echo ' selected="selected"' ?> value="14">Every fortnight</option>
  <option<?php if($value == 28) echo ' selected="selected"' ?> value="28">Every month</option>
</select>

答案 1 :(得分:0)

由于您已经有了“人为定义的”间隔,因此您必须将选项硬编码到视图中:

;