2016-12-16 84 views
1

我有一個表單,用戶可以創建一個項目。然而,當表單被提交併且未通過驗證時,舊的輸入不會被記住並且被簡單地擦除,這對用戶來說是令人沮喪的。當驗證失敗時,Laravel 5.3表單不保留舊輸入

我現在用的是laravelcollective形式,這和我的HTML看起來像:

{{ Form::open(['route' => 'my.route', 'class' => 'form-horizontal', 'files' => true]) }} 

<div class="form-group"> 
    {{ Form::label('name', 'Name', ['class' => 'control-label col-md-3']) }} 
    <div class="col-md-9"> 
     {{ Form::text('name', null, ['placeholder' => 'hello world' ,'class' => 'form-control']) }} 
    </div> 
</div> 

<div class="form-group"> 
    {{ Form::label('description', 'Description', ['class' => 'control-label col-md-3']) }} 
    <div class="col-md-9"> 
     {{ Form::textarea('description', null, ['placeholder' => 'hello world', 'class' => 'form-control']) }} 
     <span>some sub-text</span> 
    </div> 
</div> 

<div class="form-group"> 
    {{ Form::label('date', 'Date', ['class' => 'control-label col-md-3']) }} 
    <div class="col-md-9"> 
     {{ Form::text('date', null, ['placeholder' => 'hello world', 'class' => 'form-control']) }} 
    </div> 
</div> 

{{ Form::close() }} 

即使當我把舊的值在這樣它不會保留舊的輸入

{{ Form::text('name', old('name') , ['placeholder' => 'hello world' ,'class' => 'form-control']) }} 

我將項目存儲在後端的方法看起來像這樣,其中ItemRequest負責驗證。

public function store(ItemRequest $request, ImageMagick $imageMagick) 
{ 
    $item = new Item; 
    $item->name = $request->name; 
    $item->description = $request->description; 
    $item->date = $request->date; 

    $item->save(); 
    return redirect()->route('some.other.route'); 
} 

試圖確定爲什麼舊的輸入不被記住。

+0

您可以發佈'ItemRequest'請 – Vuldo

回答

3

使用withInput()方法在重定向路由方法的結尾,就像這樣:

// If validation failed, use this method to make the old inputs available in the view 
return redirect()->route('some.other.route')->withInput(); 

查看更多有關Old Inputs in Laravel

希望這有助於!

+2

當驗證因使用表單請求而失敗時,不會調用此函數。 – Vuldo

+0

@Vuldo - 很好,我已經更新了我的答案!感謝:D –