簡體   English   中英

Laravel 5.4與資源的隱式路由模型綁定返回空對象

[英]Laravel 5.4 implicit route model binding with resource returns empty object

我在laravel的路由模型綁定中遇到了一個非常奇怪的問題。

使用路由資源:

Route::resource('vendors', 'VendorController');

編輯條目的途徑如下:

GET|HEAD | admin/vendors/{vendor}/edit | vendors.edit | App\Http\Controllers\VendorController@edit | web,auth.admin

因此,根據我對隱式路由模型綁定的理解,vendor屬性應該允許直接訪問對象。

在我的Controller函數中,我可以毫無問題地獲得實際的ID。 但是,當我嘗試獲取供應商對象時,結果為空。 沒有404,但是結果為空,使模板失敗並顯示“ Undefined variable:vendor”。

public function edit(Vendor $vendor)
{
    dd($vendor);
    return view('admin.vendor.edit', compact($vendor));
}

有人能指出我正確的方向嗎?

更新:由於某種原因,路由模型綁定現在可以正常工作。 但是,模板仍會引發錯誤,提示供應商未定義。

@extends('admin.layout')

@section('content')

{!! Form::model($vendor, ['method' => 'PATCH', 'url' => 'admin/vendors'.$vendor->id]) !!}
    @include ('admin.vendor._form', ["submitButtonText" => "Änderungen speichern"])
{!! Form::close() !!}

@include ('_errors')

@endsection

更改此行:

return view('admin.vendor.edit', compact($vendor));

對此:

return view('admin.vendor.edit', compact('vendor'));

我相信這是因為{vendor}是供應商對象的ID。

我相信您必須使用該ID來獲取該對象。

像這樣:

Vendor::find($vendor);

作為壓縮數組的替代方法,您可以:

public function edit(Vendor $vendor)
{
   return view('admin.vendor.edit')->withVendor($vendor);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM