Php Laravel 5.4隐式路由模型与资源绑定返回空对象

Php Laravel 5.4隐式路由模型与资源绑定返回空对象,php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,我陷入了一个非常奇怪的问题与拉威尔的路线模型绑定 使用路由资源: Route::resource('vendors', 'VendorController'); 编辑条目的路径如下所示: GET|HEAD | admin/vendors/{vendor}/edit | vendors.edit | App\Http\Controllers\VendorController@edit | web,auth.admin 因此,根据我对隐式路由模型绑定的理解,vendor属性应该允许直接访问对象

我陷入了一个非常奇怪的问题与拉威尔的路线模型绑定

使用路由资源:

Route::resource('vendors', 'VendorController');
编辑条目的路径如下所示:

GET|HEAD | admin/vendors/{vendor}/edit | vendors.edit | App\Http\Controllers\VendorController@edit | web,auth.admin
因此,根据我对隐式路由模型绑定的理解,vendor属性应该允许直接访问对象

在我的控制器功能中,我可以毫无问题地获得实际id。但是当我尝试获取vendor对象时,结果是空的。没有404,但只是一个空结果,使模板失败,变量未定义: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

我相信这是因为{vendor}是vendor对象的ID

我相信你得用那个身份证才能拿到那个东西

大概是这样的:

Vendor::find($vendor);
更改此行:

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

return view('admin.vendor.edit', compact('vendor'));
作为压缩阵列的替代方案,您可以:

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

我相信这是因为{vendor}是vendor对象的ID。您必须使用该ID从数据库中获取对象。如果不键入hint,即函数edit$vendor,那么在添加时会得到什么?假设它是ID,当您使用Vendor::find$Vendor时会得到什么?您是否正确地将您的App\Vendor模型导入控制器?App\Vendor已导入。出于某种原因,它现在确实返回了它应该返回的对象。但是我的模板仍然失败。您的模板很可能失败,因为这不是您使用compact的方式。尝试压缩“供应商”。每个路由模型绑定返回空模型请参见此处: