【问题标题】:How pass a variable from view to controller in Laravel without using the URL or forms如何在 Laravel 中将变量从视图传递到控制器而不使用 URL 或表单
【发布时间】: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


【解决方案1】:

您不能在控制器中计算状态及其计数吗?然后将准备好的数据传递给视图只是为了“显示”它?

我认为您不必将数据从视图传递到控制器。

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多