/** * Lists all Role models. * @return mixed */ public function actionIndex() { $result = []; $rows = Role::findAll(); foreach ($rows as $row) { $result[$row->category][] = $row; } return $this->render('index', ['membersDataProvider' => new ArrayDataProvider(['allModels' => ArrayHelper::getValue($result, Role::Category_Member, []), 'key' => 'id']), 'adminsDataProvider' => new ArrayDataProvider(['allModels' => ArrayHelper::getValue($result, Role::Category_Admin, []), 'key' => 'id']), 'systemsDataProvider' => new ArrayDataProvider(['allModels' => ArrayHelper::getValue($result, Role::Category_System, []), 'key' => 'id'])]); }
public function actionRole($user) { $userRoles = Assignment::find()->select('role')->where(['user' => $user])->indexBy('role')->all(); if (\Yii::$app->request->isPost) { $selectedRoles = LuLu::getPostValue('roles', []); Assignment::deleteAll(['and', 'user=\'' . $user . '\'', ['not in', 'role', $selectedRoles]]); foreach ($selectedRoles as $selectedRole) { if ($userRoles != null && isset($userRoles[$selectedRole])) { continue; } $newAssignment = new Assignment(); $newAssignment->user = $user; $newAssignment->role = $selectedRole; $newAssignment->save(); } return $this->redirect(['role', 'user' => $user]); } $allRoles = Role::findAll(); return $this->render('role', ['userRoles' => $userRoles, 'allRoles' => $allRoles]); }