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方法: