会话数据未保存在插件控制器十月 CMS 中

Posted

技术标签:

【中文标题】会话数据未保存在插件控制器十月 CMS 中【英文标题】:Session data not saved in plugin controller October CMS 【发布时间】:2020-06-05 00:07:20 【问题描述】:

在 10 月 CMS 的下一个请求中,会话不包含先前设置的数据。

我所做的是: 我正在尝试在 10 月 CMS 中使用插件控制器的操作方法将数据放入会话中。

\Session::put('name', 'Test Name');
\Session::keep(['name']);
var_dump(\Session::get('name'));

之后我重定向到我的应用程序的特定页面

return \Redirect::to('/created');

在此页面中加载了一个组件,该组件应该显示数据。 但是,当我尝试访问此组件后端的会话数据时

var_dump(\Session::get('name')); echo '<br>';

会话根本不包含我之前放置的数据。

我已经

    检查'/storage/framework/sessions'文件夹是否可写。 会话是否已开始。 检查控制器动作和下一页(组件)之间是否没有其他请求。 设置更长的会话生命周期。 检查它是否是“正确的”会话,因为它包含中间件设置的数据。 还尝试同时添加 Flash 消息:
session()->flash("message", "Registered successfully");

\Flash::success('Settings successfully saved!');

return \Redirect::to('/created')->with('message', 'Registered successfully');

我的控制器类位于以下文件夹结构中: Plugin controller

动作方法如下:

  public function create(\HttpRequest $request)
  
    // When robot
    if($request->input("recaptcha") != "success") 
      // Sets a successful message
      session()->flash("message", "Registered successfully");
      session()->flash("status", "Success");
      session()->flash("alert-class", "alert-success");
      \Session::put('name', 'Test Name');
    
    return \Redirect::to('/created');
  

有人可以帮忙吗?

【问题讨论】:

你能用代码分享你的action method of a plugin controller的信息吗:) @HardikSatasiya 我添加了插件控制器文件夹结构和具体控制器动作方法。 @HardikSatasiya 我觉得我的(闪存)会话有些问题,因为当使用return \Redirect::back()-&gt;withInput($request-&gt;all()); 返回时,我也无法使用value=" form_value('fname') " 请求旧的输入数据 【参考方案1】:

我知道这个回复迟了,但我遇到了完全相同的问题,经过多次尝试,我发现了问题所在。您必须在 web 中间件中对路由进行分组,如下所示:

Route::group(['middleware' => ['web']], function () 
    // your routes here
);

【讨论】:

以上是关于会话数据未保存在插件控制器十月 CMS 中的主要内容,如果未能解决你的问题,请参考以下文章

OneThink插件中控制器访问路径控制

十月 CMS - 排序记录 - 工具栏图标的部分示例?

Spring 项目中控制器和服务类的通用类

MVC模式中控制器(servlet)接收请求参数、调用DAO、保存处理结果、改变路径并转发(响应)

十月CMS实时更新数据

计算机中控制器中常见的寄存器及其作用