Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Blade-Laravel中使用会话数据_Php_Laravel_Session - Fatal编程技术网

Php 在Blade-Laravel中使用会话数据

Php 在Blade-Laravel中使用会话数据,php,laravel,session,Php,Laravel,Session,我在我的控制器中创建了一个新会话,并用数据库中的一些数据填充它 这是控制器代码: public function index(Request $request) { $products = Products::with('categories')->get()->take(5); $request->session()->put('session_products', $products); return view('shoppingcard.ca

我在我的控制器中创建了一个新会话,并用数据库中的一些数据填充它

这是控制器代码:

public function index(Request $request) {
    $products = Products::with('categories')->get()->take(5);
    $request->session()->put('session_products', $products);
    return view('shoppingcard.card');
}
在下一个控制器函数中,我检索会话数据

public function receiver(Request $request) {
    if($request->session()->has('session_products')) { 
        echo $request->session()->get('session_products'); 
    } 
    else return "stop no session"; 

    return view('shoppingcard.endview');
}
现在如果我做一个:
return$request->session()->get('session_products')我得到了我需要的一切

以下是会话内容的虚拟数据:

{"id":5,"title":"Beautiful Unicorn","price":"20.00","sale_price":"15.00","status":"active","created_at":null,"updated_at":null,}
现在我在endview刀片中,希望输出数据


如何输出特定数据,如“标题”

为了访问title元素,需要将json字符串转换为数组。为此,您需要使用php的
json\u decode
函数对字符串进行解码,然后像这样访问数组:

$decodedJsonString = json_decode($request->session()->get('session_products'), true);
$decodedJsonString[id]['title']一样访问它

更新#1

使用laravel的with()或compact()方法将其发送到视图

with()和compact都是很有说服力的方法


将数据序列化到会话并取消序列化返回到对象。您所需要的只是以正常方式使用这些信息:

public function receiver(Request $request) {
    if(! $request->session()->has('session_products')) {
        return "stop no session"; 
    }

    return view('shoppingcard.endview')
            ->with('title', $request->session()->get('session_products')[0]['title']);
}
或者,您可以将其全部传递到您的视图:

public function receiver(Request $request) {
    if(! $request->session()->has('session_products')) {
        return "stop no session"; 
    }

    return view('shoppingcard.endview')
            ->with('products', $request->session()->get('session_products'));
}
并在视图中使用它:

@foreach($products as $product)
    {{ $product['title'] }}
@endforeach

您的会话将产品另存为json。您可以使用json_decode对其进行解码,然后访问每个产品

代码为:

$products = json_decode($request->session()->get('session_products'), true);

foreach($products as $product)
{
  echo $product['title'];
}

哦,对不起,我对整个会话都不熟悉,cookie之类的东西..嗯,好吧,我想我不需要打开一个新变量就可以访问数据。。对不起,我对这个完全陌生。。但是非常感谢!编辑后添加了一些选项是的,非常感谢,我正在玩截取的代码:)好的,我会试试,但为什么要使用json_解码?我看到它也适用于@Antonio Carlos Riberio给我的解决方案——非常感谢!如果你想用它在视图上显示,那么你必须将它从(json)字符串转换成数组,这样你就可以访问每个元素,但是如果你只需要完整的字符串,那么@antonio carlos answer是最好的!我明白了,非常感谢你的帮助!这个页面太棒了:)更正:compact()方法不是Laravel/Elount方法,而是PHP方法: