2 回答
TA贡献1963条经验 获得超6个赞
在代码中
GET|HEAD | admin/products/{}/edit
应该用一个值填充,类似于{}
{item}
如果在控制器方法中,您有如下代码:ProductsController@edit
public function edit(Request $request, Item $item){ }
第二个参数应该 1) 存在,2) 应该与路由 {variable} 中的值匹配,所以如果你在方法参数中有变量,那么它应该是Item $item
{item}
item
{something}
public function edit(Request $request, Item $something);...
请注意,请求$request,在方法中不是必需的;
我想补充一点,如果找不到该项目,这样做将导致404,该项目将根据该项目模型中的方法获取,因此,如果您的物品中有类似的东西Item $item
getRouteKeyName()
model
public function getRouteKeyName() { return 'slug'; }
该列将从数据库中读取该项目。同样,如果您没有使用该方法,它将使用ID。slug
因此,总而言之,whould在那里与您的控制器的该模型的参数相匹配,其中默认情况下是产品模型的ID,除非您定义方法,否则该模型是Eloquent模型web
{some_value}
Product $some_value
some_value
getRouteKeyName()
Products
Laravel Controllers Dependency Injection希望能解决它!
TA贡献1777条经验 获得超10个赞
正如Harven所建议的那样,问题在于资源路由没有正确定义。删除反斜杠后,一切开始工作:
Route::resource('admin/products', 'ProductsController')->middleware('auth');
在此之后,路由列表已正确填写,并且路由名称也已正确生成
| GET|HEAD| admin/products/{product}/edit | products.edit | App\Http\Controllers\ProductsController@edit | web,auth |
- 2 回答
- 0 关注
- 145 浏览
添加回答
举报