我的控制器如下:
public function update(PermissionFormRequest $request,$id)
{
$permissionUpdated = $this->permission->update($request,$id);
if($permissionUpdated){
//return $permissionUpdated;
return 'updated';
}
return response()->json(['message' => 'Can not update ticket']);
}
表单请求代码为:
public function rules()
{
return [
'name' =>'required|unique:permissions,name,'.$this->id,
];
}
尝试使用相同ID 进行更新时,会引发错误:
{" name":["该名称已被采用。"]}
答案 0 :(得分:3)
要获取Request
中的ID,您可以使用route()
方法。请注意,在route('id')
文件中使用的routes.php
中使用参数名称!
public function rules()
{
$id = $this->route('id'); //or whatever it is named in the route
return [
'name' =>'required|unique:permissions,name,'.$id,
];
}
希望这有帮助!
答案 1 :(得分:1)
在表单请求中,您可以通过两个方式获取id,一个是segment,另一个是route()函数。
如果您使用资源控制器,如
Route::resource('permissions','PermissionController');
然后$this->route('permission');
或
您使用的是自定义路线,例如/permissions/{id}
然后$this->route('id');
public function rules()
{
$id = $this->route('permission');
return [
'name' =>'required|unique:permissions,name,'.$id,
];
}
或者我们也可以使用段来获取路径中的id
public function rules()
{
$id = $this->segment(3);
return [
'name' =>'required|unique:permissions,name,'.$id,
];
}