Laravel如何重定向携带$image_变量并在视图中展示
解决方案
嘿,我来帮你搞定这个重定向传值的问题!首先得明确:重定向是发起全新的HTTP请求,原来的请求上下文会被清空,没法直接把$image_变量直接传递过去,咱们得用Laravel的Session闪存数据来实现这个需求,具体步骤如下:
步骤1:修改控制器的重定向逻辑
把你原来的重定向代码改成下面这样,用with()方法把数据闪存到Session中:
public function store(Request $request) { if ($request->input('asc')){ // 这里先提个小问题:你当前的循环结束后,$id只会拿到最后一个property的id // 如果用户关联了多个房产,这样只会获取最后一个房产的图片,后面我会给你优化方案 $image = PropertyUser::where('user_id', '=', Auth::user()->id)->get(); foreach($image as $property) { $id = $property->property_id; } $image_ = Image::where('property_id', $id)->sortBy('description')->get(); // 关键:用with()把数据闪存到session,重定向后可以读取 return redirect('settings/photos')->with('image_', $image_); } // 别忘了处理没有asc参数的情况 return redirect('settings/photos'); }
步骤2:调整视图代码读取Session数据
因为数据存在Session里,视图需要从Session中取出数据,修改你的循环部分:
@if(session('image_')) @foreach (session('image_') as $images) <div class="image-warp"> <img src="{{$images->filename}}" style="width:100px;height:100px;"> <br/> <span style="color: #1b1e21">{{$images->description}}</span> </div> @endforeach @else <p>暂无图片数据</p> @endif
额外优化:解决$id的潜在问题
你当前的循环逻辑里,$id最后只会保留最后一个PropertyUser对应的property_id,如果用户关联了多个房产,这样只会获取最后一个房产的图片。如果需要获取所有关联房产的图片,可以改成这样:
// 直接获取用户所有关联的property_id数组 $propertyIds = PropertyUser::where('user_id', Auth::user()->id)->pluck('property_id'); // 查询所有这些property对应的图片并排序 $image_ = Image::whereIn('property_id', $propertyIds)->sortBy('description')->get();
这样就能一次性拿到用户所有关联房产的图片啦!
内容的提问来源于stack exchange,提问作者Adokiye Iruene
相关产品推荐
相关产品推荐

