0

我想知道是否有人可以帮助我。

我试图列出从 1970 年到当年的所有年份,而不必每年都进入代码并更新它。

我正在使用以下代码来实现这一点,但我不确定如何使用 Input::old('year') 。

$currentYear = date("Y");
$years = range( $currentYear, 1970 );

echo '<label for="year">Year</label>';
echo '<select name="year" id="year">';
echo '  <option value="">Please Select</option>';
foreach( $years as $year ) {
    echo '<option value="' . $year . '">' . $year . '</option>';
}
echo '</select>';

任何帮助将不胜感激。

4

1 回答 1

3

如果您在检查表单是否存在验证错误(在本例中为选择输入)后尝试重新填充表单,您可以首先在模型(或其他适合您的地方)中创建一个生成年份范围的方法像这样

 public static function getRange()
 {
   return array_combine(range(date("Y"), 1970), range(date("Y"), 1970));
 }

上面的代码将产生一个像这样的数组(从当年到 1970 年)

Array ( 
[2013] => 2013 
[2012] => 2012 
[2011] => 2011 
[2010] => 2010 
[2009] => 2009 
[2008] => 2008 
...
[1970] => 1970)

Form然后在您的视图中,您可以使用类创建选择输入

<?php echo Form::select('year', Model::getRange());?>

第一个参数是名称,第二个参数接受将填充选择输入的数组,在这种情况下,我们通过调用返回上述数组的 getRange() 方法从“模型”填充它。

然后在您的控制器中检查验证是否发生错误

return Redirect::to('form')->withInput();

在这里,该withInput()方法处理旧输入,您的表单将具有正确的选择选项。

希望这可以帮助。

于 2013-07-02T12:15:39.293 回答