2015-04-23 90 views
1

当创建新的Role时,管理员可以选择他想分配给该角色的不同权限。在将新创建的Role保存到数据库后,选定的权限将同步到right_role表。Laravel 5验证很多数据

public function store(CreateRoleRequest $request) { 
    $role = new Role(['name' => $request->get('name')]); 

    $rights = []; 
    foreach ($request->get('rights') as $id => $enabled) { 
     if ($enabled) { 
      $rights[] = $id; 
     } 
    } 

    $role->save(); 
    $role->rights()->sync($rights); 

    return redirect()->route('users.index'); 
} 

但是,我如何验证提交的权利对不存在的价值?我可以在我的CreateRoleRequest内做到这一点吗?

回答

1

这可以通过自定义验证器完成。下面是示例如何可以在CreateRoleRequest中使用自定义验证程序

public function __construct() { 
    Validator::extend("valid_rights", function($attribute, $value, $parameters) { 
     $rules = [ 
      'right_id' => 'exists:rights,id' 
     ]; 
     foreach ($value as $rightId) { 
       $data = [ 
        'right_id' => $rightId 
       ]; 
       $validator = Validator::make($data, $rules); 
       if ($validator->fails()) { 
        return false; 
       } 
      } 
     return true; 
    }); 
} 

public function rules() { 
    return [ 
     'containers' => 'required|valid_rights', 
    ]; 
} 
+0

感谢Margus!完美的作品 –