2017-08-30 117 views
0

我的控制器如下:Laravel力的独特作用验证形式请求失败,

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

为什么你不使用'name'=>'required | unique:permissions,name'。$ id,'我想你没有'$ this-> id' –

+0

@HirenGohel我已经试过但$ id表示未定义的变量ID。 –

+0

所以'$ this-> id'给了你'id' ?? –

回答

2

要获得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, 
    ]; 
} 

希望这有助于!

0

在形式要求您可以通过两种方式获得ID一个是段和另一途径是()函数。

如果您使用的资源控制像

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, 
    ]; 
} 

或者我们可以使用部门还对从路线

01获得ID
public function rules() 
{ 
    $id = $this->segment(3); 
    return [ 
     'name' =>'required|unique:permissions,name,'.$id, 
    ]; 
}