2015-12-23 19 views
5

Jestem teraz trochę zakłopotany, uczę się Laravel z Laracast, według instruktora, po niepowodzeniu sprawdzania poprawności formularz nie resetuje wartości wprowadzonych przez użytkownika. Ale podczas testowania sprawdzania poprawności, po przesłaniu formularza zresetować wszystko.Wartość resetowania Laravel na wejściu po niepowodzeniu sprawdzania poprawności?

Kolejne pytanie to niezdefiniowana zmienna$errors kiedy próbuję uzyskać do niej dostęp.

mojego kontrolera

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

} 

moim zdaniem

@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 

On użyć v5.0 i v5.2 używam

+0

Czy możesz pokazać nam swoją funkcję sprawdzania poprawności? – James

Odpowiedz

3

zwrócić następujący od kontrolera. ..

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

Sprawdź, czy to pomaga. możesz wykluczyć pewne pola, jeśli chcesz to polubić.

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

To nie działa po dodaniu '-> withInput()' method –

4

Jest tu kilka problemów.

Po pierwsze, dane wejściowe nie są zapisywane po sprawdzeniu poprawności. Uważam, że dzieje się tak dlatego, że przechodzisz do funkcji budujących dane wejściowe, kiedy powinieneś przekazać wartość, którą chcesz ustawić jako domyślną. Wypróbuj następujące ...

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

To powinno wypełnić element wejściowy poprzednio wprowadzonymi danymi. Wystarczy wykonać tę samą procedurę dla pozostałych wejść formularza.

Drugi problem z nieprzypisaną wartością $errors jest spowodowany zmianą w Laravel 5.2. Wiele osób zostało mający dokładnie taki sam problem, więc ja po prostu lubię odnosić się do poprzedniej odpowiedzi: Laravel 5.2 $errors not appearing in Blade

+0

Będę testować ponownie z wersji 5.0, obejrzałem film ponownie i nie wypełnił on funkcji 'old ('title')', just 'null'. Dziękuję za odpowiedź –

+1

W takim przypadku możliwe byłoby, że używał on 'Form :: model()', gdzie uważam, że faktycznie wypełniłby te wartości. – user3158900

+0

Problem może być spowodowany przez nowy LaravelCollective Html zastąpiony przez Illuminate Html –

4

jeśli nie używasz

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

ale mają proste pól wejściowych jak

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

"Wypełnij" wartość ze starymi danymi.

Powiązane problemy