【问题标题】:Laravel Session data different in views and controllersLaravel Session 数据在视图和控制器中不同
【发布时间】:2017-04-28 15:36:34
【问题描述】:

在我的PagesController 中,我有方法view(Page $page),它被路由调用:

Route::get('{page}', 'PagesController@view');

方法体如下:

public function view(Page $page)
{

    // Process content vars
    $page->content = ContentVarsProcessor::process($page->content);

    var_dump(\Session::get('form_contact-form_response'));

    return $page->out();
}

$page->out() 正文是:

public function out()
{

    // ... some processing

    $content = view($view, $data)->render();

    return $content;
}

在视图中,我有

{{ var_dump(session('form_'.$form->identifier.'_response')) }}

有趣的是,两个转储显示不同的数据。数据在表单验证时闪烁,应该在 1 个请求后消失,但它一直存在,而在控制器中它显示为 null。转储如下:

C:\wamp\www\wsv\app\Modules\Pages\Controllers\PagesController.php:21:null

C:\wamp\www\wsv\storage\framework\views\7dbbca5089cdc8f8c9e49cadafb0bb435b7adf4d.php:7:string '{"status":"error","errors":["Name is required"]}' (length=48)

在同一个页面,同一个请求。我在这里错过了什么?

谢谢

【问题讨论】:

  • 你能检查一下你是否正确地包含了 Session 所需的外观......或者清除你的应用程序数据或按 shift+f5。希望以上任何一项对您有帮助
  • 在配置外观中似乎定义得很好'Session' => Illuminate\Support\Facades\Session::class,,我已经清除了我的 cookie 并刷新了页面并清除了缓存。在表单提交时,控制器似乎仍然没有获取任何会话数据,而在视图中会话数据出现但它仍然存在并且无法删除。
  • 您确定要将数据正确转储到会话中吗?或者你只是想从 Session 得到它?
  • 在返回之前,我尝试返回 redirect()->with(...) 以及 \Session::set()\Session::put()。我认为它确实将值放入,因为它出现在视图中,而不是控制器中。
  • 请尝试使用 Session::get() 和 Session::put() 进行操作。请使用 Session::put('your-key'); 检查数据是否在 Session::set('your-key') 之后立即插入;更多详情请参考laravel.com/docs/5.3/session#retrieving-data

标签: php laravel session laravel-blade


【解决方案1】:

与其他问题相同的错误 - 包括不一致的中间件。

Laravel Flash Data Persisting indefinitely

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多