Laravel仓库模式下如何正确获取多变量数据
Laravel仓库模式多变量数据获取问题解决
问题原因
控制器代码错误地将仓库返回的完整数据数组赋值给了$data['all_product'],导致仓库返回的deal_product、top_selling等其他数据集被嵌套在all_product键下,无法在视图中直接访问。
修复方案
直接将仓库返回的数组赋值给控制器的$data变量,让仓库返回的所有键成为$data的直接元素:
修正后的控制器代码
public function index(){ $data = $this->data->index(); return view('frontend.index', compact('data')); }
如果控制器需要加入自定义额外数据,可使用array_merge合并:
public function index(){ // 自定义额外数据 $customData = [ 'page_title' => '首页' ]; $data = array_merge($customData, $this->data->index()); return view('frontend.index', compact('data')); }
视图访问方式
修复后,在视图中可直接访问仓库返回的所有数据集:
{{-- 访问每日特惠产品 --}} @foreach($data['deal_product'] as $product) <div>{{ $product->product_name }}</div> @endforeach {{-- 访问热销产品 --}} @foreach($data['top_selling'] as $product) <div>{{ $product->product_name }}</div> @endforeach
内容的提问来源于stack exchange,提问作者Shahnewaj Sajib
相关产品推荐
相关产品推荐

