Реализации своего класса капчи

Написал свой класс капчи согласно документации   https://developers.webasyst.ru...  . В самом конце написано:

"После реализации вашего класса капчи, нужно в <code class="path">factories.php</code> указать имя вашего класса:".

После этого все заработало (как и должно было быть)..

Но вот в чем проблема: После каждого обновления Shop-Script , файл factories.php перезаписывается на "стоковый". Естественно добавление класса своей капчи, при этом, пропадает и он перестает работать!

Как можно подключить свой класс каптчи, так что бы при каждом обновлении "движка" он не отключался и не было необходимости править файл factories.php ?
<code class="path"></code>

4 ответа

  • 1
    Anton F 10 марта 2022 18:31 #

    пользовательские конфиги хранятся /wa-config/apps/, соответственно нужно создать /wa-config/apps/shop/factories.php

  • 1
    Alexei_D 11 марта 2022 11:52 #

    Вариант с размещением файла factories.php в папку /wa-config/apps/shop/ не работает!

    При таком варианте свой класс капчи не вызывается!

    • +3
      waResearchLab waResearchLab 11 марта 2022 13:44 #

      Навскидку, не пробуя и глубоко не копая: Да, всё так. Судя по коду класса waAppConfig этот файл зачитывается исключительно из каталога приложения. Но если посмотреть целиком на этот класс, и в частности на то что относится к factories

             if (file_exists($this->getAppPath().'/lib/config/factories.php')) {
                  $this->factories = include($this->getAppPath().'/lib/config/factories.php');
              }
              if (!empty($this->options['factories']) && is_array($this->options['factories'])) {
                  foreach ($this->options['factories'] as $k => $v) {
                      $this->factories[$k] = $v;
                  }
              }

      и учесть то, что этот класс является 

      class waAppConfig extends SystemConfig

      а сам SystemConfig доступен к редактированию и расположен в wa-config, то, думаю, через 

      $this->options['factories']

      можно добиться желаемого эффекта.

      • +1
        Anton F Anton F 20 марта 2022 02:12 #

        суммируя вышесказанное, нужно добавить в /wa-config/apps/.../config.php:

        <?php
        return [
            'factories' => [...],
            ...
        ];

        немного промахнулся)) я ж помню, что добавлял фабрики через конфиг))

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите