Ошибка Yii2 при установке ReCaptcha на готовый сайт

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
ruf13pest
Сообщения: 1
Зарегистрирован: 2023.12.11, 05:27

Ошибка Yii2 при установке ReCaptcha на готовый сайт

Сообщение ruf13pest »

Пытаюсь установить ReCaptcha на готовый сайт на yii2 используя https://github.com/himiklab/yii2-recaptcha-widget и https://yiico.ru/blog/496-yii2-recaptcha-widget (без composer)

Получаю ошибку при открытии сайта:
Fatal error: Uncaught ReflectionException: Class "app\models\ReCaptchaValidator" does not exist in C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php:507 Stack trace: #0 C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php(507): ReflectionClass->__construct('app\models\ReCa...') #1 C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php(385): yii\di\Container->getDependencies('app\models\ReCa...') #2 C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php(170): yii\di\Container->build('app\models\ReCa...', Array, Array) #3 C:\xampp\htdocs\vendor\yiisoft\yii2\BaseYii.php(365): yii\di\Container->get('app\models\ReCa...', Array, Array) #4 C:\xampp\htdocs\vendor\yiisoft\yii2\validators\Validator.php(230): yii\BaseYii::createObject(Array) #5 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(461): yii\validators\Validator::createValidator('app\models\ReCa...', Object(app\models\CustomersForm), Array, Array) #6 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(413): yii\base\Model->createValidators() #7 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(188): yii\base\Model->getValidators() #8 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(808): yii\base\Model->scenarios() #9 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(427): yii\base\Model->activeAttributes() #10 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(487): yii\base\Model->getActiveValidators('theme') #11 C:\xampp\htdocs\vendor\yiisoft\yii2\widgets\ActiveField.php(932): yii\base\Model->isAttributeRequired('theme') #12 C:\xampp\htdocs\vendor\yiisoft\yii2\widgets\ActiveField.php(652): yii\widgets\ActiveField->addAriaAttributes(Array) #13 C:\xampp\htdocs\views\site\customers.php(66): yii\widgets\ActiveField->dropDownList(Array, Array) #14 C:\xampp\htdocs\vendor\yiisoft\yii2\base\View.php(347): require('C:\xampp\htdocs...') #15 C:\xampp\htdocs\vendor\yiisoft\yii2\base\View.php(257): yii\base\View->renderPhpFile('C:\xampp\htdocs...', Array) #16 C:\xampp\htdocs\vendor\yiisoft\yii2\base\View.php(156): yii\base\View->renderFile('C:\xampp\htdocs...', Array, Object(app\controllers\SiteController)) #17 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Controller.php(407): yii\base\View->render('customers', Array, Object(app\controllers\SiteController)) #18 C:\xampp\htdocs\controllers\SiteController.php(181): yii\base\Controller->render('customers', Array) #19 [internal function]: app\controllers\SiteController->actionCustomers(NULL) #20 C:\xampp\htdocs\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array) #21 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Controller.php(178): yii\base\InlineAction->runWithParams(Array) #22 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Module.php(552): yii\base\Controller->runAction('customers', Array) #23 C:\xampp\htdocs\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('site/customers', Array) #24 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Application.php(384): yii\web\Application->handleRequest(Object(yii\web\Request)) #25 C:\xampp\htdocs\web\index.php(14): yii\base\Application->run() #26 {main} Next yii\di\NotInstantiableException: Failed to instantiate component or class "app\models\ReCaptchaValidator". in C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php:509 Stack trace: #0 C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php(385): yii\di\Container->getDependencies('app\models\ReCa...') #1 C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php(170): yii\di\Container->build('app\models\ReCa...', Array, Array) #2 C:\xampp\htdocs\vendor\yiisoft\yii2\BaseYii.php(365): yii\di\Container->get('app\models\ReCa...', Array, Array) #3 C:\xampp\htdocs\vendor\yiisoft\yii2\validators\Validator.php(230): yii\BaseYii::createObject(Array) #4 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(461): yii\validators\Validator::createValidator('app\models\ReCa...', Object(app\models\CustomersForm), Array, Array) #5 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(413): yii\base\Model->createValidators() #6 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(188): yii\base\Model->getValidators() #7 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(808): yii\base\Model->scenarios() #8 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(427): yii\base\Model->activeAttributes() #9 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Model.php(487): yii\base\Model->getActiveValidators('theme') #10 C:\xampp\htdocs\vendor\yiisoft\yii2\widgets\ActiveField.php(932): yii\base\Model->isAttributeRequired('theme') #11 C:\xampp\htdocs\vendor\yiisoft\yii2\widgets\ActiveField.php(652): yii\widgets\ActiveField->addAriaAttributes(Array) #12 C:\xampp\htdocs\views\site\customers.php(66): yii\widgets\ActiveField->dropDownList(Array, Array) #13 C:\xampp\htdocs\vendor\yiisoft\yii2\base\View.php(347): require('C:\xampp\htdocs...') #14 C:\xampp\htdocs\vendor\yiisoft\yii2\base\View.php(257): yii\base\View->renderPhpFile('C:\xampp\htdocs...', Array) #15 C:\xampp\htdocs\vendor\yiisoft\yii2\base\View.php(156): yii\base\View->renderFile('C:\xampp\htdocs...', Array, Object(app\controllers\SiteController)) #16 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Controller.php(407): yii\base\View->render('customers', Array, Object(app\controllers\SiteController)) #17 C:\xampp\htdocs\controllers\SiteController.php(181): yii\base\Controller->render('customers', Array) #18 [internal function]: app\controllers\SiteController->actionCustomers(NULL) #19 C:\xampp\htdocs\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array) #20 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Controller.php(178): yii\base\InlineAction->runWithParams(Array) #21 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Module.php(552): yii\base\Controller->runAction('customers', Array) #22 C:\xampp\htdocs\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('site/customers', Array) #23 C:\xampp\htdocs\vendor\yiisoft\yii2\base\Application.php(384): yii\web\Application->handleRequest(Object(yii\web\Request)) #24 C:\xampp\htdocs\web\index.php(14): yii\base\Application->run() #25 {main} thrown in C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php on line 509
Ошибка появляется после добавления в форму:

Код: Выделить всё

public $reCaptcha;

public function rules()
{
  return [
      // ...
      [['reCaptcha'], \himiklab\yii2\recaptcha\ReCaptchaValidator2::className(),
        'secret' => 'your secret key', // unnecessary if reСaptcha is already configured
        'uncheckedMessage' => 'Please confirm that you are not a bot.'],
  ];
}
Строки 499-515 из C:\xampp\htdocs\vendor\yiisoft\yii2\di\Container.php

Код: Выделить всё

protected function getDependencies($class)
    {
        if (isset($this->_reflections[$class])) {
            return [$this->_reflections[$class], $this->_dependencies[$class]];
        }

        $dependencies = [];
        try {
            $reflection = new ReflectionClass($class);
        } catch (\ReflectionException $e) {
            throw new NotInstantiableException(
                $class,
                'Failed to instantiate component or class "' . $class . '".',
                0,
                $e
            );
        }
В чем может быть проблема? Как решить?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Ошибка Yii2 при установке ReCaptcha на готовый сайт

Сообщение samdark »

В контенере нет himiklab\yii2\recaptcha\ReCaptchaValidator2::className() и заавтолодить тоже не вышло. Лучше всего поставить через composer, конечно.
Ответить