我在尝试更新一个简单的实体时生气,我已经看到当我将更新方法的参数Role $role
更改为int $id
并生成{{ 1}}在更新之前,它可以工作,但似乎我的刀片findOrFail
没有将我的对象for::open
传递给我的控制器。
我已经尝试在我的编辑裁剪模板中将其传递出去:
$role
或者像这样:
{{ Form::open(['name'=>'editrole','method'=> 'put','route'=>['Role.update',$role],
'class'=>'mt-4 ml-2']) }}
这里是更新方法:
{{ Form::open(['name'=>'editrole','method'=> 'put','url'=>route('Role.update',$role),
'class'=>'mt-4 ml-2']) }}
在更新方法中创建public function update(RoleRequest $request, Role $role)
{
try{
//dd($role);
$role->update($request->all());
return redirect(route('Role.index'))->with('success_message','Rôle modifié');
}catch (ModelNotFoundException $ex){
return redirect(route('Role.index'))->with('error_message',
'Erreur : '.$ex->getMessage().'<br />'.$ex->getTraceAsString());
}
}
属性为空时
谢谢你的帮助。
路线是这样的:
dd($role)
答案 0 :(得分:0)
您无法将对象作为路径参数传递。如上所述使用id,然后在各个表单字段中设置对象属性。
你不需要try catch,因为如果路由模型绑定失败,404将在它到达你的方法之前发生。
public function update(RoleRequest $request, Role $role) {
$role->update($request->all());
return redirect(route('Role.index'))->with('success_message','Rôle modifié');
}
编辑:
所有这些都在Implicit Binding部分中解释: