会话Flash消息尽管编码,但无法显示在任

时间:2016-04-10 08:39:20

标签: validation laravel-5.2

我按照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框时。

1 个答案:

答案 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中删除它们,这仍然有效,但如果我从路由文件中删除它们,它就不会。