我的应用程序是一个简单的CRUD应用程序。我有一个删除控制器操作,当项目成功删除时,它会重定向回列表。我现在要添加的是向用户发送的一条消息,表明数据已成功删除。
我的控制器操作:
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">×</button>
{{ $message }}
</div>
@endif
我遇到的问题是$message
变量始终为空..
答案 0 :(得分:15)
由于with方法将数据闪烁到会话,您可以使用典型的Session::get
方法检索数据。
所以你必须得到
$message = Session::get('message');
答案 1 :(得分:5)
您可以在刀片模板上使用此功能:
@if( Session::has('message') )
<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{{ Session::get('message') }}
</div>
@endif
参考: easylaravelblog
答案 2 :(得分:1)
您可以查看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,
],
您可以对两者中的任何一个进行评论或删除它。我们只需要定义一次。