【发布时间】:2021-12-08 19:39:38
【问题描述】:
如果我想在不使用 URL 的情况下从视图中将 $k =1 之类的变量(但 $K 的值更改,因为它是一个 for 循环计数器)作为参数传递给控制器中的函数,该怎么办? 状态列在数据库表“parcel”中表示为 0-2。例如,在 foreach 循环中,如果 $k 的值 =0 则控制器函数获取 $k 的值,使用 count() 方法计算 0 在数据库中出现的次数(状态),然后返回该值视图的计数。
查看
@php
$status_arr = array("Item Accepted by Courier","Collected","Shipped");
@endphp
@foreach($status_arr as $k =>$v)
<!-- Parcel stages -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-warning shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-warning
text-uppercase mb-1">
{{$v}}
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">
{{$statuses}}
</div>
</div>
<div class="col-auto">
<i class="fas fa-bicycle fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
@endforeach
控制器
function total_parcels()
{
$status = DB::table('parcels')
->where('status', '=', $k)
->count();
return view('dashboard', ['statuses' => $status]);
}
路线
Route::get('dashboard', [DashboardController::class, 'total_parcels']);
【问题讨论】:
-
变量改变调用api并传值时使用ajax请求
-
不能将变量传递给控制器,因为控制器代码在视图之前运行。但是,您可以使用组件来加载视图的一部分,您可以在其中像在控制器中一样运行代码
-
那么,视图中的函数不能调用吗?
-
你可以创建一个辅助函数,你可以创建一个组件,你可以使用Ajax,但是不应该从视图中调用一个控制器函数。这不是 MVC 的工作方式。
-
使用 XMLHttpRequest 您可以从客户端发送数据/查看数据。
标签: laravel model-view-controller laravel-8