2016-12-16 35 views
1

我正在使用Laravel 5.3。我有一個表單,當驗證失敗時,它沒有填充舊輸入的字段。該形式如下:(Laravel)表單驗證不會返回舊輸入

{{ 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() }} 

我處理這樣的信息:

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'); 
    } 

我做我的驗證在我自己的形式請求文件「ItemRequest」它看起來像這樣:

class ItemRequest extends FormRequest 
{ 
    public static $rules = [ 
     'name' => 'required|min:5|max:255', 
     'description' => 'required|min:50', 
     'date' => 'required' 
    ]; 

    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     if ($this->isMethod('post')) { 
      return $this->createRules(); 
     } 

     return $this->updateRules(); 
    } 

    public function createRules() 
    { 
     return self::$rules; 
    } 

    public function updateRules() 
    { 
     return array_merge(
      self::$rules, 
      $this->otherRules() 
     ); 
    } 

    public function otherRules() 
    { 
     return ['age' => "required"]; 
    } 
} 

我覺得問題在於ItemRequest。我已經嘗試添加 - > withInput()到我的商店方法返回,但舊的輸入仍然沒有被保留。

return redirect()->route('some.other.route')->withInput(); 

但它沒有做出改變。

編輯:我刷新頁面時清除舊的輸入。

回答

0

您必須在您的輸入字段區域包含value="{{ Input::old('Code')}}"。所以在你描述的文字區域,你可以使用,

<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','value'=>'Input::old('description')']) }} 
     <span>some sub-text</span> 
    </div> 
</div> 
+3

這還不行。我嘗試拋棄舊的價值,它是空的。 – DanielPahor