Laravel重定向数据不起作用

时间:2014-02-08 09:54:37

标签: php laravel blade

我的应用程序是一个简单的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">&times;</button>
        {{ $message }}
    </div>
@endif

我遇到的问题是$message变量始终为空..

3 个答案:

答案 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">&times;</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,
],

您可以对两者中的任何一个进行评论或删除它。我们只需要定义一次。