【问题标题】:Laravel 5.4 Session is not retainingLaravel 5.4 会话未保留
【发布时间】:2017-04-16 07:50:10
【问题描述】:

我是 laravel 的新手,所以我在会话中遇到了这个问题。我实际上是在获取一个 xml 响应并将其转换为一个数组并将其存储到会话中:

这是我的控制器,它正在接受请求,将响应转换为数组并将其存储在会话中。

public function HotelSearch(Request $request){
        $rezlive = new RezLiveSearch();
        $rezliveSearch = $rezlive->hotelSearchByCountry($request);
        $request->session()->put('hotelSearchResult', $rezliveSearch);
        $theResult = $request->session()->get('hotelSearchResult');
        return view('search-result',compact('theResult'));
    }

所以它正在存储,我可以在我的查看页面上查看搜索结果。但是当我导航到其他页面时,我刚刚存储的会话不会被延续。我试图存储一个普通的字符串,它工作正常,我可以在整个应用程序中访问它。任何人都可以帮助我吗?

顺便说一句,我正在使用 laravel 5.4

【问题讨论】:

  • 你试过序列化和反序列化你的数据吗?
  • 你能转储结果吗?它是资源还是普通数组?
  • @MateuszSip 我会努力做到的。
  • @Mr.Phoenix 它的资源,因为我刚刚转换了一个 xml 响应。我不能在这里转储它,因为它有敏感数据。
  • 你不能将资源传递给会话,它应该是一个数组或普通对象

标签: php session laravel-5.4


【解决方案1】:

$rezlive = new RezLiveSearch(); $rezliveSearch = $rezlive->hotelSearchByCountry($request); $request->session()->put('hotelSearchResult', $rezliveSearch);

资源不能存储在会话中。

来自 php 手册

http://php.net/manual/en/language.types.resource.php

资源是一个特殊的变量,持有对外部资源的引用。

您需要从资源中获取 XML 数据并将其存储到会话中,或者您可以将 XML 存储到缓存中,将其与随机生成的 ID 相关联,避免在会话中放置太多信息。

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 2018-12-11
    • 2017-11-19
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2017-09-09
    相关资源
    最近更新 更多