Кастом модуль - не работает, в Custom - работает

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dimyy
    Active Community Member
    • Jun 2018
    • 569

    Кастом модуль - не работает, в Custom - работает

    Сделан модуль, в нем определена сущность:
    TestModuleEntity.json (при ребилде табличка появляется - все ОК)

    В репозитории определяем: ...\Modules\MyModule\Repositories\TestModuleEntity .php

    <?php
    namespace Espo\Modules\MyModule\Repositories;
    use Espo\ORM\Entity;
    class TestModuleEntity extends \Espo\Core\ORM\Repositories\RDB {
    public function getIds() {
    return 'QWERTY'; }
    }

    Дергаем из кастом энтри поинт (для тестов):

    public function run() {
    $k = $this->getEntityManager()->getRepository('TestModuleEntity')->getIds();
    var_dump(json_encode($k));
    }

    Ожидаем увидеть QWERTY а видим
    Uncaught Exception Error: "Call to undefined method Espo\Core\ORM\Repositories\RDB::getIds()" at /home/espodev/public_html/custom/Espo/Custom/EntryPoints/TestEntity.php line 27 {"exception":"[object] (Error(code: 0): Call to undefined method Espo\\Core\\ORM\\Repositories\\RDB::getIds()


    Перетягиваем файл в Custom\Repositories, меняем соответствующим образом namespace.

    <?php
    namespace Espo\Custom\Repositories;
    use Espo\ORM\Entity;
    class TestModuleEntity extends \Espo\Core\ORM\Repositories\RDB {
    public function getIds() {
    return 'QWERTY'; }
    }


    Все работает.

    Что не так?
  • dimyy
    Active Community Member
    • Jun 2018
    • 569

    #2
    Вопрос раскопан:

    Поиск классов ведется по пути:

    $moduleName = $this->getScopeModuleName($scopeName);
    $path = ($moduleName !== false) ? 'Espo/Modules/'.$moduleName : 'Espo';

    А getScopeModuleName требует обязательного присутствия имени модуля в описателе класса в scopes.

    public function getScopeModuleName($scopeName)
    {
    return $this->get('scopes.' . $scopeName . '.module', false);
    }

    Решение:

    прописать ключ "module": "MyModule" в resources\metadata\scopes\TestModuleEntity.json

    Comment

    Working...