如何在 Laravel 中将变量从视图传递到控制器而不使用 URL 或表单

Posted

技术标签:

【中文标题】如何在 Laravel 中将变量从视图传递到控制器而不使用 URL 或表单【英文标题】:How pass a variable from view to controller in Laravel without using the URL or forms 【发布时间】: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 您可以从客户端发送数据/查看数据。 【参考方案1】:

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

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

【讨论】:

以上是关于如何在 Laravel 中将变量从视图传递到控制器而不使用 URL 或表单的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 - 如何将变量(数组和整数)从视图传递到控制器?

如何从 Laravel 的控制器中传递变量到视图

如何在asp.net mvc中将数据从视图传递到控制器

在 laravel 5.4 中将变量从 Route 传递到 Controller 的最简单方法是啥?

Laravel 5:在视图模板中获取所有传递的数据

如何:在 Laravel 4 中将数据从控制器传递到 JavaScript?