【问题标题】:Laravel - How to store array in session?Laravel - 如何在会话中存储数组?
【发布时间】:2016-12-27 19:45:32
【问题描述】:

我正在尝试将 $user 数组存储在会话中,但只有 id 存储在会话中。我怎样才能把名字和姓氏也放在一起?

public function getIndex( Request $request )
{
    $this->data['firstNames'] = \DB::table('tb_users')->orderBy('first_name')->lists('first_name', 'id');
    $user = User::where('id', '=', $request->get('id'))->get()->toArray();
    Session::put('user', [ 'id' => $request->get('id'), 'last_name' => $request->get('last_name'), 'first_name' => $request->get('first_name'), ]);
    return view('dashboard.index',$this->data)->with('user', $user);
}

这是选择表单

<form action="" method="post">
{!! Form::select('id', $firstNames) !!}
<button type="submit" value="Submit">Go</button>
</form>

【问题讨论】:

标签: php laravel


【解决方案1】:

要将数组保存到会话,请使用 session() 帮助器,语法如下:

session(['var' => $array]);

稍后您可以使用session('var') 获取数组。

另外,您似乎使用了错误的数组结构。要在Form::select 中使用数组,它应该具有以下结构:

[1 => 'John', 2 => 'Dave']

https://laravel.com/docs/5.3/session#storing-data

【讨论】:

    【解决方案2】:

    要将多个数据保存到会话中使用:

    public function getIndex( Request $request )
    {
    
            $this->data['firstNames'] = \DB::table('tb_users')->orderBy('first_name')->lists('first_name', 'id');
            $user = User::where('id', '=', $request->get('id'))->get()->toArray();
            Session::set('user', [ 'id' => $request->get('id'), 'last_name' => $request->get('last_name'), 'first_name' => $request->get('first_name'), ]);
            return view('dashboard.index',['user'=>Session::get('user')]);
        }
    

    【讨论】:

    • 嗨@Rahul 得到syntax error, unexpected ''user)]);' (T_ENCAPSED_AND_WHITESPACE)
    • 我试过了。由于&lt;form action="" method="post"&gt; {!! Form::select('id', $firstNames) !!} &lt;button type="submit" value="Submit"&gt;Go&lt;/button&gt; &lt;/form&gt; 的形式,现在从 index.blade.php 收到错误 Undefined variable: firstNames
    • 而不是$firstNames 使用$user-&gt;first_name
    • 现在出现这个错误Trying to get property of non-object (View: /resources/views/dashboard/index.blade.php)
    • 抱歉尝试$user['first_name'];
    【解决方案3】:
    public function getAddToCart(Request $request,$id)
    {   
        $product = Product::find($id);
        $oldCart = Session::has('cart') ? Session::get('cart') : null;
        $cart = new Cart($oldCart);
        $cart->add($product,$product->id);
    
        $request->session()->put('cart',$cart);
        return redirect()->route('product.index');
    }
    

    你可以这样做。这是我的测试网站http://lookoko.com ,当您点击添加到购物车时,程序会将商品数组放入会话中。您可以在https://github.com/GoogleYY/shop-cart.git上找到的所有代码

    【讨论】:

    猜你喜欢
    • 2016-09-17
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2016-10-02
    • 1970-01-01
    相关资源
    最近更新 更多