public function actionRouteSearch($target, $term = '', $refresh = '0') { if ($refresh == '1') { AccessHelper::refeshFileCache(); } $result = []; $manager = Yii::$app->getAuthManager(); $existsOptions = []; $exists = array_keys($manager->getPermissions()); $routes = AccessHelper::getRoutes(); if ($target == 'new') { foreach ($routes as $route) { if (in_array($route, $exists)) { continue; } if (empty($term) or strpos($route, $term) !== false) { $result[$route] = $route; } } } else { foreach ($exists as $name) { if ($name[0] !== '/') { continue; } if (empty($term) or strpos($name, $term) !== false) { $result[$name] = $name; } // extract route part from $name $r = explode('&', $name); if (empty($r[0]) || !in_array($r[0], $routes)) { $existsOptions[$name] = ['class' => 'lost']; } } } $options = $target == 'new' ? [] : ['options' => $existsOptions]; return Html::renderSelectOptions('', $result, $options); }