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

最初のパラメータは名前で、2 番目のパラメータは選択入力を設定する配列を受け入れます。この場合、上記の配列を返す getRange() メソッドを呼び出して「モデル」から設定します。

そして、エラーが発生した場合に検証をチェックするコントローラーで

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

ここでは、withInput()メソッドが古い入力を処理し、フォームに正しいオプションが選択されます。

お役に立てれば。

于 2013-07-02T12:15:39.293 に答える