2014-02-08 40 views
12

我的应用程序是一个简单的CRUD应用程序。我有一个删除控制器操作,当该项目被成功删除时,它将重定向回列表。我现在试图添加的是向用户发送的消息,即数据已成功删除。Laravel重定向数据不起作用

我的控制器操作:

public function deleteItem($id) 
{ 
    try { 
     $item = Item::findOrFail($id); 
     $item->delete(); 
     return Redirect::to('list')->with('message', 'Successfully deleted'); 
    } catch (ModelNotFoundException $e) { 
     return View::make('errors.missing'); 
    } 
} 

我list.blade.php视图的一部分,我尝试显示消息:

@if (isset($message)) 
    <div class="alert alert-success alert-dismissable"> 
     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
     {{ $message }} 
    </div> 
@endif 

的问题,我有是,$message变量总是空的。

回答

15

由于with方法会将数据闪烁到会话中,因此可以使用典型的Session::get方法检索数据。

所以,你必须得到尽可能

$message = Session::get('message'); 
5

您可以使用此对您的刀片模板:

@if(Session::has('message')) 
    <div class="alert alert-success alert-dismissable"> 
     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
     {{ Session::get('message') }} 
    </div> 
@endif 

参考: easylaravelblog

0

请检查APP/kernel.php

\Illuminate\Session\Middleware\StartSession::class, 

是定义多次

protected $middleware = [ 
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
\Illuminate\Session\Middleware\StartSession::class, 
]; 

protected $middlewareGroups = [ 
'web' => [ 
    \App\Http\Middleware\EncryptCookies::class, 
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
    \Illuminate\Session\Middleware\StartSession::class, 
    \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    \App\Http\Middleware\VerifyCsrfToken::class, 
    \Illuminate\Routing\Middleware\SubstituteBindings::class, 
], 

您可以发表评论的任何一个或删除。我们只需要定义一次。