我现在很困惑,我正在从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
答案 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>