2015-12-23 6 views
5

Ich bin so verwirrend jetzt, ich lerne Laravel von Laracast, nach dem Instruktor, nach Validierung fehlschlagen, das Formular nicht zurückgesetzt Werte, die Benutzer eingegeben. Aber beim Testen der Validierung, wenn ich das Formular absende alles zurücksetzen.Laravel Reset-Wert in Eingang nach Validierung fehlgeschlagen?

Eine andere Frage ist die undefined Variable$errors wenn ich versuche, darauf zuzugreifen.

mein Controller

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

} 

Meine Ansicht

@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 

Er v5.0 verwenden und ich bin mit v5.2

+0

Können Sie uns Ihre Validierungsfunktion zeigen? – James

Antwort

3

Rückkehr die folgenden von dem Controller. ..

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

sehen, ob das hilft. Sie können bestimmte Felder ausschließen, wenn Sie dies möchten.

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

Es funktioniert nicht nach dem Hinzufügen von '-> withInput()' Methode –

4

Es gibt ein paar Probleme hier.

Der erste, die Eingaben werden nach der Validierung nicht gespeichert. Ich glaube, dies liegt daran, dass Sie null in die Funktionen übergeben, die die Eingänge erstellen, wenn Sie den Wert übergeben sollten, den Sie standardmäßig verwenden möchten. Versuchen Sie, die folgende ...

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

Dies sollte dann das Eingangselement mit den alten Daten füllen, die zuvor eingegeben wurden. Folgen Sie einfach dem gleichen Verfahren für den Rest der Formulareingaben.

Das zweite Problem mit dem $errors Wert, der nicht festgelegt wird, ist tatsächlich aufgrund einer Änderung mit Laravel 5.2. Viele Menschen haben, die die gleiche genaue Problem so würde ich nur Sie zu einer vorherigen Antwort auf hinweisen: Laravel 5.2 $errors not appearing in Blade

+0

Ich werde wieder mit 5.0 testen, sah ich das Video wieder und er füllte nicht die Funktion 'alt ('title')', nur 'null'. Danke für deine Antwort –

+1

In diesem Fall wäre es möglich, dass er 'Form :: model()' verwendet, wo ich glaube, dass diese Werte tatsächlich ausgefüllt würden. – user3158900

+0

Problem kann durch die neue LaravelCollective HTML hat Illuminate Html zu ersetzen –

4

Wenn Ihr nicht

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

verwenden, aber einfache Eingabefelder wie

<input id="Email" name="Email" type="email" class="uit-input" placeholder="your email address" value={{old('Email')}}> 

'prefill' den Wert mit den alten Daten.