yii\rbac\PhpManager::updateItem PHP Method

updateItem() protected method

protected updateItem ( $name, $item )
    protected function updateItem($name, $item)
    {
        if ($name !== $item->name) {
            if (isset($this->items[$item->name])) {
                throw new InvalidParamException("Unable to change the item name. The name '{$item->name}' is already used by another item.");
            } else {
                // Remove old item in case of renaming
                unset($this->items[$name]);
                if (isset($this->children[$name])) {
                    $this->children[$item->name] = $this->children[$name];
                    unset($this->children[$name]);
                }
                foreach ($this->children as &$children) {
                    if (isset($children[$name])) {
                        $children[$item->name] = $children[$name];
                        unset($children[$name]);
                    }
                }
                foreach ($this->assignments as &$assignments) {
                    if (isset($assignments[$name])) {
                        $assignments[$item->name] = $assignments[$name];
                        $assignments[$item->name]->roleName = $item->name;
                        unset($assignments[$name]);
                    }
                }
                $this->saveAssignments();
            }
        }
        $this->items[$item->name] = $item;
        $this->saveItems();
        return true;
    }

Usage Example

 /**
  * @inheritdoc
  */
 protected function updateItem($name, $item)
 {
     if (parent::updateItem($name, $item)) {
         if ($item->name !== $name) {
             $this->trigger(self::EVENT_RENAME_ROLE, new RenameRoleEvent(['oldRoleName' => $name, 'newRoleName' => $item->name]));
         }
         return true;
     }
     return false;
 }