示例#1
0
 /**
  * edit particular client information 
  * @param  [type] $id [description]
  * @return [type]     [description]
  */
 public function actionEdit($id)
 {
     $client = $this->findModel($id);
     $groups = new Group();
     // find groups selecting
     $groups_clients = GroupClient::find()->where(['clients_id' => $id])->all();
     $selected = [];
     foreach ($groups_clients as $key => $value) {
         $selected[] = $value->group->id;
     }
     $groups->id = $selected;
     if ($client->load(Yii::$app->request->post()) && $client->validate()) {
         // get post variable of GroupClient
         $list_groups = Yii::$app->request->post()['Group']['id'];
         // groups is required
         if (!empty($list_groups)) {
             // save client table first
             $client->save();
             // delete all existing group of this user in groupsclients
             GroupClient::deleteAll(['clients_id' => $id]);
             // each group will be saved with a corresponding client which be saved before
             foreach ($list_groups as $key => $group) {
                 $groups_clients = new GroupClient();
                 $groups_clients->clients_id = $client->id;
                 $groups_clients->groups_id = $group;
                 $groups_clients->save();
             }
             // everything is ok, redirect to clients list page
             $errors = $groups_clients->getErrors();
             if (empty($errors)) {
                 return $this->redirect(['/clients']);
             }
         } else {
             $groups->addError('id', 'Groups can not blank');
         }
     }
     return $this->render('edit', ['client' => $client, 'groups' => $groups, 'groups_clients' => $groups_clients]);
 }