如何使用laravel中的控制器将多个变量传递给视图
Posted
技术标签:
【中文标题】如何使用laravel中的控制器将多个变量传递给视图【英文标题】:how to pass multiple variables in to a view using controller in laravel 【发布时间】:2018-04-24 13:42:36 【问题描述】:这是我的控制器
public function show($id)
$products = Item::find($id)->products;
$categories = Item::all();
return view('category.index', compact(['categories', 'products']));
这是我的看法
@extends('layout.front')
@section('page')
<div class="row" id="portfolio">
<!-- Page Content -->
<div class="container">
<div class="row">
<div class="col-lg-3" style="margin-top:20px;">
<nav class="main-nav">
<ul class="main-nav-ul">
<li style="background-color: #343A40; color: #ffffff; font-weight: 600;" id="sidebar-header"><a>Product List</a></li>
<li><a href="#" style="font-weight: 600;">HouseHold<span></span></a>
<ul>
@if(!empty($categories))
@forelse($categories as $category)
<li><a href=" route('category.show', $category->id)"> $category->name </a></li>
@empty
<li>No data found</li>
@endforelse
@endif
</ul>
</li>
<li><a href="#" style="font-weight: 600;">Vegetables</a></li>
<li><a href="#" style="font-weight: 600;">Fruits</a></li>
</ul>
</nav>
</div>
<!-- /.col-lg-3 -->
<div class="col-lg-9">
<div class="row" style="margin-top:20px;">
@foreach($products as $key=>$product)
<div class="col-md-4 col-sm-6 portfolio-item" id="items">
<div class="card h-100">
<a href="#"><img class="card-img-top" src="/storage/ $product->image " ></a>
<div class="card-body">
<h4 class="card-title">
<a href="#"><br /> $product->item_name</a>
</h4>
<p class="card-text" style="color: #A9A9A9;text-decoration: line-through;">LKR $product->old_price</p>
<h4 style="text-align: center; color: #fff;"><a class="waves-effect waves-light btn btn-dark btn-block">LKR $product->new_price</a></h4>
</div>
</div>
</div>
@endforeach
</div>
<!-- /.row -->
</div>
<!-- /.col-lg-9 -->
</div>
<!-- /.row -->
</div>
<!-- /.container -->
</div>
@endsection
我想在同一个视图中传递我的类别列表和产品项目。但是我不能将这两个变量从控制器传递到我的视图。它显示了这个错误。
未定义变量:产品(查看:/var/www/html/hzone_new/resources/views/category/index.blade.php)
【问题讨论】:
【参考方案1】:更新您的控制器功能,如:
$categories = Item::all();
$products = Item::find($id)->products;
return view('category.index', compact('categories', 'products'));
注意:您不能在函数中定义 products 变量,请定义
@if(!empty($products))
@foreach($products as $key=>$product)
<div class="col-md-4 col-sm-6 portfolio-item" id="items">
<div class="card h-100">
<a href="#"><img class="card-img-top" src="/storage/ $product->image " ></a>
<div class="card-body">
<h4 class="card-title">
<a href="#"><br /> $product->item_name</a>
</h4>
<p class="card-text" style="color: #A9A9A9;text-decoration: line-through;">LKR $product->old_price</p>
<h4 style="text-align: center; color: #fff;"><a class="waves-effect waves-light btn btn-dark btn-block">LKR $product->new_price</a></h4>
</div>
</div>
</div>
@endforeach
@endif
【讨论】:
感谢支持我的兄弟。你的代码工作正常。非常感谢以上是关于如何使用laravel中的控制器将多个变量传递给视图的主要内容,如果未能解决你的问题,请参考以下文章
如何通过控制器将两个不同模型的值作为 Laravel 8 中的单个返回变量传递给视图文件