public function actionCheckTest() { $rr = new RequestResponse(); if ($rr->isRequestAjaxPost()) { if (\Yii::$app->request->post('className')) { $className = \Yii::$app->request->post('className'); if (!class_exists($className)) { $rr->message = \Yii::t('app', 'Test is not found'); return (array) $rr; } if (!is_subclass_of($className, CheckComponent::className())) { $rr->message = \Yii::t('app', 'Incorrect test'); return (array) $rr; } /** * @var $checkTest CheckComponent */ try { $checkTest = new $className(); if ($lastValue = \Yii::$app->request->post('lastValue')) { $checkTest->lastValue = $lastValue; } $checkTest->run(); $rr->success = true; $rr->data = (array) $checkTest; } catch (\Exception $e) { $rr->message = \Yii::t('app', 'Test is not done') . ': ' . $e->getMessage(); } } } return (array) $rr; }
/** * @return CheckComponent[] */ public function loadChecksComponents() { $result = []; $dir = new Dir($this->basePath . "/" . static::CHECKS_DIR_NAME); if ($dir->isExist()) { if ($files = $dir->findFiles()) { foreach ($files as $file) { $className = $this->checkNamespace . "\\" . $file->getFileName(); if (class_exists($className)) { $component = new $className(); if (is_subclass_of($component, CheckComponent::className())) { $result[$component->className()] = $component; } } } } } return $result; }