用文本间隔替换数字间隔
Replace numeric interval with text interval
我一直在为我工作的公司编辑和清理会计应用程序的代码。当用户注册时,他们会告诉我们多久检查一次他们的帐户以获取新信息。目前,它使用基于他们注册日期的 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)。
最好的方法是什么?我意识到如果不对某些代码进行重大修改,这可能是不可能的。
谢谢
既然你的选项已经基于数值,为什么不把选项写出来呢?
<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>
可用的选项无论如何都是硬编码的,for 循环只是为了方便,不需要任何花哨的动态东西:)
如果您真的不喜欢那样,只需定义一个数组并在其上进行 foreach,例如:
<?php
$options = array(0 => 'Choose a value', 1 => 'Every day', 7 => 'every Week', 14 => 'every fortnight', '28' => 'every month');
?>
<select name="syst_interval" id="syst_interval" class="form-control">
<?php
foreach($options as $key => $text)
{
echo '<option value="' . $key . '"';
print $key == $value ? ' selected="selected"' : '';
echo '>' . $text . '</option>';
}
?>
</select>
由于您已经有一个 "humanly-defined" 间隔,因此您必须将选项硬编码到视图中:
<select name="syst_interval" id="syst_interval" class="form-control">
<option value="0">Select value</option>
<option value="1" <?= ( $value == 1 ) ?'selected':'' ?> >Everyday</option>
<option value="7" <?= ( $value == 7 ) ?'selected':'' ?> >Every week</option>
<option value="14" <?= ( $value == 14 ) ?'selected':'' ?> >Every forthnight</option>
<option value="28" <?= ( $value == 28) ?'selected':'' ?> >Every month</option>
</select>
我一直在为我工作的公司编辑和清理会计应用程序的代码。当用户注册时,他们会告诉我们多久检查一次他们的帐户以获取新信息。目前,它使用基于他们注册日期的 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)。 最好的方法是什么?我意识到如果不对某些代码进行重大修改,这可能是不可能的。 谢谢
既然你的选项已经基于数值,为什么不把选项写出来呢?
<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>
可用的选项无论如何都是硬编码的,for 循环只是为了方便,不需要任何花哨的动态东西:)
如果您真的不喜欢那样,只需定义一个数组并在其上进行 foreach,例如:
<?php
$options = array(0 => 'Choose a value', 1 => 'Every day', 7 => 'every Week', 14 => 'every fortnight', '28' => 'every month');
?>
<select name="syst_interval" id="syst_interval" class="form-control">
<?php
foreach($options as $key => $text)
{
echo '<option value="' . $key . '"';
print $key == $value ? ' selected="selected"' : '';
echo '>' . $text . '</option>';
}
?>
</select>
由于您已经有一个 "humanly-defined" 间隔,因此您必须将选项硬编码到视图中:
<select name="syst_interval" id="syst_interval" class="form-control">
<option value="0">Select value</option>
<option value="1" <?= ( $value == 1 ) ?'selected':'' ?> >Everyday</option>
<option value="7" <?= ( $value == 7 ) ?'selected':'' ?> >Every week</option>
<option value="14" <?= ( $value == 14 ) ?'selected':'' ?> >Every forthnight</option>
<option value="28" <?= ( $value == 28) ?'selected':'' ?> >Every month</option>
</select>