我想知道是否有人可以帮助我。
我试图列出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>';
非常感谢任何帮助。
答案 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()
方法处理旧输入,您的表单将具有正确的选定选项。
希望这有帮助。