【发布时间】:2018-07-05 00:18:42
【问题描述】:
我在理解如何在 Laravel 中将变量从一个视图传递到另一个视图时遇到了一些麻烦。
我所做的是我创建了一个路由器,一旦用户登录,它就会将用户重定向到我的主页。在我的控制器返回视图之前,路由器创建了两个包含客户和服务数据的对象从数据库链接到用户。
public function index()
{
$customers = Customer::where('CardCode', Auth::user()->customer)->first();
$serviceCalls = ServiceCall::where('customer', Auth::user()->customer)->get();
return view('pages.logged', compact('customers', 'serviceCalls'));
}
之后,视图返回给用户,显示一个表格,其中包含来自使用 Blade 的对象的一些信息。
@foreach ($serviceCalls as $serviceCall)
@if ($serviceCall->status != -1)
<tr>
<td><a href="{{ route('service', $serviceCall) }}">{{$serviceCall->subject}}</a></td>
<td>{{$serviceCall->custmrName}}</td>
<td>{{$serviceCall->convertStatusToText($serviceCall->status)}}</td>
</tr>
@endif
@endforeach
如您所见,我尝试从第一个“td”中创建一个链接。在这个链接中,我尝试将当前的 $serviceCall 传递给路由器。
路由器:
Route::get('/logged/efforts', 'AppController@showServiceCall')->name('service');
AppController 功能:
public function showServiceCall(ServiceCall $serviceCall)
{
return view('pages.test', compact('serviceCall'));
}
现在我面临的问题如下。 每次我尝试在锚点 href 标记中传递变量时,数据都会传递到 URL 中。这导致用户能够操纵 url 以从数据库访问不同的 $serviceCall。
我想要实现的是能够将变量传递到用户无法查看/操作输入数据的“某处”,并在第二个视图中访问该变量。
我尝试将 ID 作为字符串传递,并在返回视图之前从控制器中的数据库中获取相应的对象。但这导致 ID 显示在 URL 中,并且没有按预期工作。我曾尝试研究 Sessions,但我认为这不是正确的方法。
我在 PHP 和 Laravel 方面的经验非常有限,所以我正在寻找一个技巧来帮助我朝着正确的方向前进。 谢谢你。 (PS。如果我的描述含糊不清,我很抱歉。很多东西对我来说都是来自 C# 和 Java 的新东西)
【问题讨论】: