2015-04-23 88 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!完美的作品 –