[英]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.