Laravel中如何在Deposits页面仅显示ID为3的计划?
只在Deposits页面显示ID为3的计划解决方案
嘿,这个需求很容易搞定,我给你两种常用的思路,优先推荐第一种,因为更符合MVC的设计原则:
方案1:在控制器层提前过滤数据(推荐)
视图的职责应该是只负责展示内容,数据过滤逻辑最好放在控制器或者模型里。你只需要修改控制器中传递数据的代码:
原来的控制器代码可能是这样的:
$plan = Plan::all(); // 获取所有计划 return view('deposits', compact('plan'));
改成下面这样,直接获取ID为3的单条计划:
// 方式1:通过find方法直接按ID查找 $plan = Plan::find(3); // 方式2:用where条件过滤(更灵活,比如以后要改条件) $plan = Plan::where('id', 3)->first(); return view('deposits', compact('plan'));
然后修改视图代码,因为现在$plan是单条数据,不需要foreach循环了:
<div class="row"> <div class="col-sm-4 text-center"> <div class="panel panel-info panel-pricing"> <div class="panel-heading"> <h3 style="font-size: 28px;"><b>{{ $plan->name }}</b></h3> </div> <div style="font-size: 18px;padding: 18px;" class="panel-body text-center"> <p><!-- 这里保留你原来的内容,比如{{ $plan->price }}之类的 --></p> </div> <!-- 其他面板内容(比如按钮、详情描述)都直接用$plan->属性调用即可 --> </div> </div> </div>
方案2:在视图层临时过滤(应急用,不推荐)
如果暂时不想修改控制器,也可以在视图的foreach循环里加一个判断条件,只渲染ID为3的计划:
<div class="row"> @foreach($plan as $p) @if($p->id == 3) <!-- 只渲染ID为3的计划 --> <div class="col-sm-4 text-center"> <div class="panel panel-info panel-pricing"> <div class="panel-heading"> <h3 style="font-size: 28px;"><b>{{ $p->name }}</b></h3> </div> <div style="font-size: 18px;padding: 18px;" class="panel-body text-center"> <p>...你原来的内容...</p> </div> <!-- 其他面板内容 --> </div> </div> @endif @endforeach </div>
⚠️ 注意:这种方式不推荐,因为把业务逻辑混在视图里,后期维护起来会很麻烦,尽量用方案1。
内容的提问来源于stack exchange,提问作者Waqar Ali
相关产品推荐
相关产品推荐

