Laravel 在表单请求中强制唯一角色验证失败
Laravel force unique role validation fail in form request
我的控制器如下:
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":["The name has already been taken."]}
要获取 Request
中的 id,您可以使用 route()
方法。请记住,在 routes.php
文件中使用的 route('id')
中使用参数名称!
public function rules()
{
$id = $this->route('id'); //or whatever it is named in the route
return [
'name' =>'required|unique:permissions,name,'.$id,
];
}
希望对您有所帮助!
在表单请求中,您可以通过两种方式获取 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,
];
}
或者我们也可以使用 segment 从路由中获取 id
public function rules()
{
$id = $this->segment(3);
return [
'name' =>'required|unique:permissions,name,'.$id,
];
}
我的控制器如下:
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":["The name has already been taken."]}
要获取 Request
中的 id,您可以使用 route()
方法。请记住,在 routes.php
文件中使用的 route('id')
中使用参数名称!
public function rules()
{
$id = $this->route('id'); //or whatever it is named in the route
return [
'name' =>'required|unique:permissions,name,'.$id,
];
}
希望对您有所帮助!
在表单请求中,您可以通过两种方式获取 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,
];
}
或者我们也可以使用 segment 从路由中获取 id
public function rules()
{
$id = $this->segment(3);
return [
'name' =>'required|unique:permissions,name,'.$id,
];
}