2017-01-03 165 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

你能告訴我們你如何做驗證嗎?它是否在控制器中,或者你是否在請求或其他形式? – devk

+0

我正在使用請求驗證。 – spruzzi

回答

0

這實際上是預期的行爲。這樣,當你例如忘記輸入你的名字,你輸入的其餘數據不會丟失。 然而,在您的用例中,這會導致意想不到的結果(因爲您在同一頁上有多個表單)。我建議將表格分割成不同的頁面:)

+0

因此,您建議使用編輯頁面而不是在同一頁面中進行讀取和更新操作? 另一件我不明白,爲什麼在標籤數據顯示,而不是在文字輸入不?從技術上講,他們有相同的行爲,還是我錯了? – spruzzi

+0

是的。爲每輛車製作一個單獨的編輯頁面。 Laravel資源控制器爲此提供了內置支持。關於標籤中顯示的數據:「Form :: label」的第二個參數應該是該字段的名稱(就像您使用Phone一樣)。當使用'Form :: model'時,你不應該爲輸入使用value參數。自動填充:) –