mdm\admin\models\Route::addNew PHP Method

addNew() public method

Assign or remove items
public addNew ( array $routes ) : array
$routes array
return array
    public function addNew($routes)
    {
        $manager = Configs::authManager();
        foreach ($routes as $route) {
            try {
                $r = explode('&', $route);
                $item = $manager->createPermission('/' . trim($route, '/'));
                if (count($r) > 1) {
                    $action = '/' . trim($r[0], '/');
                    if (($itemAction = $manager->getPermission($action)) === null) {
                        $itemAction = $manager->createPermission($action);
                        $manager->add($itemAction);
                    }
                    unset($r[0]);
                    foreach ($r as $part) {
                        $part = explode('=', $part);
                        $item->data['params'][$part[0]] = isset($part[1]) ? $part[1] : '';
                    }
                    $this->setDefaultRule();
                    $item->ruleName = RouteRule::RULE_NAME;
                    $manager->add($item);
                    $manager->addChild($item, $itemAction);
                } else {
                    $manager->add($item);
                }
            } catch (Exception $exc) {
                Yii::error($exc->getMessage(), __METHOD__);
            }
        }
        Helper::invalidate();
    }

Usage Example

Example #1
0
 /**
  * Assign routes
  * @return array
  */
 public function actionAssign()
 {
     $routes = Yii::$app->getRequest()->post('routes', []);
     $model = new Route();
     $model->addNew($routes);
     Yii::$app->getResponse()->format = 'json';
     return $model->getRoutes();
 }