2017-01-03 10 views
0

laravel 5.3のフォームヘルパーに問題があります。 フォームにデータを表示するforeachがあります。 フォームを送信して検証が失敗するまで、Everythinsはうまく動作します。 したがって、検証が失敗した場合、私のフォームの入力テキストはpreviusデータを表示せず、送信されたデータのみを表示します。ここで コード:Laravelフォームヘルパーが検証エラーの後にデータを表示しない

@foreach($cars as $car) 
    {!! Form::model($car, ['route' => ['cars.update', $car->id], 'method' => 'PUT']) !!} 
     <div class="col-md-2"> 
      {{ Form::label('name', $car->name) }} 
      {{ Form::text('name', $car->name, ['class' => 'editbox-normal']) }} 
     </div> 
     <div class="col-md-2"> 
      {{ Form::label('phone', 'Phone') }} 
      {{ Form::text('phone', null, ['class' => 'editbox-normal']) }} 
     </div> 
     <div class="col-md-2"> 
      {{ Form::label('license_plate', 'License plate') }} 
      {{ Form::text('license_plate', null, ['class' => 'editbox-normal']) }} 
     </div> 
     <div class="col-md-2"> 
      {{ Form::label('total_km', 'KM') }} 
      {{ Form::text('total_km', null, ['class' => 'editbox-normal']) }} 
     </div> 
     <div class="col-md-1 col-md-offset-3 flex-space-around"> 
      {{ Form::submit('Submit', ['class' => 'btn btn-edit']) }} 
     </div> 
    {!! Form::close() !!} 
@endforeach 

私はそれらのいずれかの形式を提出し、検証が失敗した場合、たとえば名前が必須であり、名前の入力が空、laravelフラッシュ$エラーですが、各フォームのすべての入力はのデータを表示するに提出された書式。この例では、すべての名前の入力は空になり、phone、license_plateおよびtotal_kmは同じ値になります。 代わりに、純粋なhtmlコードを入力に使用すると、everythinksはうまく動作します。 さらに、あなたが気付くと、最初のラベルは$ car-> nameに設定された値を持っています。これはテキスト入力と同じですが、正しく表示されているラベルの中では入力にありません。 誰もがその理由を知っていますか? ありがとうございます。

+1

検証方法を教えてください。それはコントローラの中にありますか、それともRequestまたは多分他の形式で持っていますか? – devk

+0

私はリクエストの検証を使用しています。 – spruzzi

答えて

0

これは実際に意図された動作です。このようにして、たとえばあなたの名前を入力することを忘れて、入力した残りのデータは失われません。 ただし、ユースケースでは、同じページに複数のフォームがあるため、意図しない結果につながります。フォームを別のページに分割することをお勧めします:)

+0

したがって、同じページで読み取りと更新操作を行う代わりに、編集ページを使用することをお勧めしますか? 私は理解していない別のことは、なぜラベルのデータではなく、テキスト入力ではないのですか?技術的には、彼らは同じ振る舞いをしていますか、間違っていますか? – spruzzi

+0

はい。車ごとに別の編集ページを作成します。 Laravelリソースコントローラには、これを組み込むサポートがあります。ラベルに表示されているデータに関して:Form :: labelの2番目の引数は、フィールドの名前でなければなりません(Phoneと同じように)。 'Form :: model'を使うときは、あなたの入力にvalue引数を使うべきではありません。それは自動的に満たされます:) –

関連する問題