【问题标题】:How do i pass an object from view to view in Laravel (PHP)?如何在 Laravel (PHP) 中将对象从视图传递到视图?
【发布时间】: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 的新东西)

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    首先将您的route 更改为在url 中有一个参数喜欢-

    Route::get('/logged/efforts/{service_id}', 'AppController@showServiceCall')->name('service');
    

    在你的view-

    <a href="{{ route('service', ['service_id'=>$serviceCall->id]) }}">{{$serviceCall->subject}}</a>
    

    在你的控制器regenerate再次服务-

    public function showServiceCall($service_id)
    {
         $serviceCall = ServiceCall::find($service_id);
         return view('pages.test', compact('serviceCall'));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      相关资源
      最近更新 更多