2015-12-23 20 views
5

私は今混乱しています。私はLaracastからLaracastを学んでいます。インストラクターによれば、検証が失敗した後、フォームはユーザーが入力した値をリセットしません。しかし、検証をテストするとき、私はフォームを提出するすべてのものをリセットします。検証後にLaravelリセット値が入力されませんでしたか?

別の質問は、アクセスしようとすると$errorsという未定義の変数です。

マイコントローラー

<?php 

namespace App\Http\Controllers; 


use App\Articles; 
use App\Http\Requests\CreateArticle; 
use Carbon\Carbon; 
use App\Http\Requests; 
use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 

class ArticlesController extends Controller 
{ 



    public function create() 
    { 
     return view('articles.create'); 
    } 


    public function store(Request $request) 
    { 
     $this->validate($request, [ 
      'title' => 'required', 
      'body' => 'required' 
     ]); 
     Articles::create($request->all()); 
     return redirect('articles'); 
    } 

} 

マイビュー

@extends('app') 

@section('content') 
    <h1>Create a new Articles</h1> 

    <hr/> 

    {!! Form::open(['url' => 'articles']) !!} 

    <div class="form-group"> 
     {!! Form::label('title', 'Title: ') !!} 
     {!! Form::text('title', null, ['class' => 'form-control']) !!} 
    </div> 


    <div class="form-group"> 
     {!! Form::label('body', 'Body') !!} 
     {!! Form::textarea('body', null, ['class' => 'form-control']) !!} 
    </div> 


    <div class="form-group"> 
     {!! Form::label('published_at', 'Published On:') !!} 
     {!! Form::input('text', 'published_at', date('Y-m-d'), ['class' => 'form-control']) !!} 
    </div> 


    <div class="form-group"> 
     {!! Form::submit('submit', ['class' => 'btn btn-primary']) !!} 
    </div> 


    @if(isset($errors)) 
    {{var_dump($errors)}} 
    @endif 
    {!! Form::close() !!} 

@stop 

彼はV5.0を使用して、私はV5.2あなたのコントローラから次

+0

あなたの検証機能を教えてもらえますか? – James

答えて

3

リターンを使用しています。 ..

return redirect('articles')->withInput(); 

これが役立つかどうかを確認してください。このようにしたい場合は、特定のフィールドを除外できます。

return redirect('articles')->withInput($request->only('email')) 
+0

' - > withInput()'メソッドを追加しても機能しません –

4

ここにいくつかの問題があります。

最初の入力は、検証が失敗した後に保存されない入力です。あなたがデフォルトにしたい値を渡すべきときに入力を構築している関数にnullを渡しているからです。以下を試してください...

<div class="form-group"> 
    {!! Form::label('title', 'Title: ') !!} 
    {!! Form::text('title', old('title'), ['class' => 'form-control']) !!} 
</div> 

これで、入力要素に以前に入力された古いデータが入力されます。残りのフォーム入力についても同じ手順を実行してください。

$errorsの値が設定されていない2番目の問題は、実際にはLaravel 5.2の変更によるものです。あなたが

<div class="form-group"> 
{!! Form::label('title', 'Title: ') !!} 
{!! Form::text('title', old('title'), ['class' => 'form-control']) !!} 
</div> 

を使用していない場合Laravel 5.2 $errors not appearing in Blade

+0

5.0でもう一度試してみましたが、ビデオをもう一度見て、関数 'old( 'title')'、 'null'だけを埋めました。ありがとうあなたの答え –

+1

その場合、彼は実際にそれらの値を埋めると信じて 'Form :: model()'を使用していた可能性があります。 – user3158900

+0

問題は、新しいLaravelCollective Htmlによって発生する可能性があります。 –

4

しかし

<input id="Email" name="Email" type="email" class="uit-input" placeholder="your email address" value={{old('Email')}}> 
のような単純な入力フィールドを持っている:私は前の回答にあなたを参照してくださいしたいと思いますので、多くの人がまったく同じ問題を抱えてきました

'prefill'は古いデータの値です。

関連する問題