【发布时间】: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