我按照5.2文档遵循严格的做法,但验证让我疯了。
1)这是我在$ property-> save()之后的控制器中的代码片段。功能
Session::flash('success', 'property table filled');
Session::flash('errors', 'These are the errors');
等
第二个问题是Validate方法,如果有错误,它会恢复到Create Form Page,但不是绑定Fields中的现有数据,而是擦除所有内容,这样我就必须从刮。此外,它不会显示任何错误消息
public function store(Request $request){
$this->validate($request, array(
'country' => 'bail|required|max:100',
'region' => 'bail|required|max:100',
etc
根据文档,如果未能通过,单独应该返回到上面的Create方法(显示创建帖子的表单的方法)并发出一组错误。 由于我使用的是资源控制器,所有路由都包含在一行中,并且所有控制器和内容都在Web中间件中:
Route::group(['middleware' =>'web'], function(){
Route::auth();
Route::get('/', function () {
return view('welcome');
});
Route::get('/home', 'HomeController@index');
Route::resource('property', 'PropertyController');
});
这是我在局部文件中包含的完美无效的片段,它包含在布局中,因此它将为每个有会话的页面显示消息(成功或失败):
@if(Session::has('success'))
<div class="alert alert-success" role="success">
<strong>Success: </strong> {{Session::get('success')}}
</div>
@endif
<div class="row">
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
如果相反,在表数据库中存储数据是成功的,它仍然不会回显任何成功的闪存会话消息。
问题:
如果提交的数据中有任何错误,为什么不显示任何内容以及为什么它会清空所有字段。清空字段的效果与刷新页面(填充字段保持填充)时不会发生的效果相同,但是当您单击并按下浏览器的URL框时。
答案 0 :(得分:0)
嗯,这是你得到答案的案例之一,但你不确切知道它为什么会起作用。
虽然我已经在路径文件中的Web中间件中使用了资源控制器方法,但事实证明我没有必要放置(或者说这还不够):
Session::flash('success', 'property table filled');
Session::flash('errors', 'Posting failed');
在属性控制器中(然后是路由器文件中的Web中间件内的这个控制器),但实际上那两行本身就在路由文件中
Session::flash('success', 'property table filled');
Session::flash('errors', 'Posting failed');
这是如此之多,以至于如果我从Controller中删除它们,这仍然有效,但如果我从路由文件中删除它们,它就不会。