验证失败后,Laravel重置输入值?

时间:2015-12-23 19:57:09

标签: php laravel laravel-5 laravel-5.2

我现在很困惑,我正在从Laracast学习Laravel,根据讲师的说法,在验证失败后,表单不会重置用户输入的值。但是在测试验证时,当我提交表单重置所有内容时。

当我尝试访问时,另一个问题是未定义的变量 (?:(MON)\s?)?(?:(TUES)\s?)?(?:(WED)\s?)?(?:(THURS)\s?)?(?:(FRI)\s?)?(?:(SAT)\s?)?(?:(SUN)\s?)?

我的控制器

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

}

他使用v5.0而我正在使用v5.2

4 个答案:

答案 0 :(得分:5)

从您的控制器返回以下内容...

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

看看是否有帮助。如果你想这样,你可以排除某些字段..

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

答案 1 :(得分:4)

这里有几个问题。

第一个,验证失败后未保存的输入。我相信这是因为当你传递你希望它默认的值时,你正在将null传递给构建输入的函数。请尝试以下方法......

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

然后应该使用先前输入的旧数据填充input元素。只需对表格输入的其余部分执行相同的步骤。

$errors值未设置的第二个问题实际上是由于Laravel 5.2的更改。许多人一直有同样的问题,所以我只想推荐您之前的回答:Laravel 5.2 $errors not appearing in Blade

答案 2 :(得分:4)

如果你没有使用

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

但有简单的输入字段,如

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

&#39;预填&#39;旧数据的值。

答案 3 :(得分:0)

最适合您的方式

<div class="form-group">
        <label for="title">Title</label>
        <input type="text" name="upload_title" class="form-control" value="{{ (old('title')) ?  old('title') : $data->title}}">
</div>