Laravel 4 - 输入::旧标准选择HTML

时间:2013-07-02 07:57:54

标签: laravel laravel-4

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

我试图列出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>';

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

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

 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());?>

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

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

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

此处withInput()方法处理旧输入,您的表单将具有正确的选定选项。

希望这有帮助。