2017 © Pedro Peláez
 

library bitrix-admin-helper-controller

Better controller for `digitalwand/digitalwand.admin_helper` which doesn't require any bitrix-module and silly class naming

image

webarchitect609/bitrix-admin-helper-controller

Better controller for `digitalwand/digitalwand.admin_helper` which doesn't require any bitrix-module and silly class naming

  • Wednesday, July 18, 2018
  • by webarchitect609
  • Repository
  • 1 Watchers
  • 0 Stars
  • 12 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Будьте осторожны: пакет брошен из-за чрезмерной сложности работы с digitalwand/digitalwand.admin_helper, большого количества ошибок в последнем и фактической заброшенности., (*1)

Замена контроллера пакета digitalwand/digitalwand.admin_helper, которая позволяет не создавать свой модуль Битрикс для использования возможностей создания CRUD-страниц своих сущностей в админке., (*2)

Будьте осторожны: пока нестабильная версия., (*3)

Для использования библиотеки следует:, (*4)

1 Установить через composer, (*5)

composer require webarchitect609/bitrix-admin-helper-controller

При этом в bitrix/modules будет установлен пакет digitalwand/digitalwand.admin_helper . Если требуется, чтобы он был установлен в local/modules, добавьте в composer.json:, (*6)

"extra": {
    "installer-paths": {
      "local/modules/{$name}/": [
        "type:bitrix-module"
      ]
    }
  },

2 Следует создать скрипт подключения модуля на основе примера из scripts/admin-helper-controller.php и подключить его в файле urlrewrite.php при помощи правила:, (*7)

[
    'CONDITION' => '#^/bitrix/admin/admin_helper_controller.php#',
    'RULE'      => '',
    'ID'        => '',
    'PATH'      => '/admin-helper-controller.php',
],

В пути в CONDITION не используйте уровень ниже, чем /bitrix/admin, т.к. после добавления в меню и перехода по такому url все остальные ссылки станут неработоспособными., (*8)

3 Первые два уровня в namespace генерируются на основании имени модуля, в котором vendor и package разделяются точкой. Значит обязательно требуется, чтобы все классы хелперов и визуального интерфейса были определены на третьем и более уровне, а у хелпера был бы указан $module из первых двух уровней namespace. При этом имя модуля следует указывать в том же регистре, в котором определён namespace. В противном случае класс не будет найден, т.к. несмотря на то, что namespace регистронезависимый, автолоадинг классов происходит в регистрозависимом режиме, т.к. в нём работает файловая система *nix подобной ОС., (*9)

Например,, (*10)

<?php

namespace Foo\Bar\AdminInterface;

use Foo\Bar\Table\BarTaskTable;
use DigitalWand\AdminHelper\Helper\AdminEditHelper;

class BarTaskEditHelper extends AdminEditHelper
{
    protected static $model = BarTaskTable::class;

    public static $module = 'Foo.Bar';

    protected static $routerUrl = '/bitrix/admin/admin_helper_controller.php';

}

4 У хелпера должен быть переопределён $routerUrl в соответствии с правилом из urlrewrite.php (см. в примере выше) Подсказка: т.к. статические члены класса не могут быть в обычном смысле переопределены, то рекомендуется использовать константы, чтобы избежать повторений, если используется несколько хелперов., (*11)

5 Если в системе существует битрикс-модуль, указанный в $module у хелперов, и требуется его явно подключать, то используйте, (*12)

\WebArch\BitrixAdminHelperController\Controller::withTryIncludeModule(true)

При этом перед подключением $module строка будет приведена к нижнему регистру. По-умолчанию попытки подключить модуль не происходит., (*13)

6 Имена классов хелперов должны быть составлены по маске (List|Edit)Helper , а имя класса интерфейса по соответствующей маске AdminInterface, (*14)

7 Хелперы должны находиться строго на том же уровне, что и интерфейс., (*15)

Все описанные ограничения и неудобные правила, которые следует выполнять, вызваны тем, что пакет digitalwand/digitalwand.admin_helper написан в том же стиле ложного ООП, что и сам Битрикс, хотя решает очень насущную задачу., (*16)

8 Добавить в мено, зарегистрировав обработчик события main:OnBuildGlobalMenu и получив URL от хелпера для списка., (*17)

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
        'main',
        'OnBuildGlobalMenu',
        function (&$adminMenu, &$moduleMenu) {
            $moduleMenu[] = [
                'parent_menu' => 'global_menu_store',
                'section'     => 'Bar task list',
                'sort'        => 610,
                'url'         => Foo\Bar\AdminInterface\BarTaskListHelper::getUrl(),
                'text'        => 'Bar task list',
                'title'       => 'Create and view bar tasks',
                'icon'        => 'sale_menu_icon_statistic',
                'page_icon'   => 'sale_page_icon_statistic',
                'item_id'     => 'my-bar-task-list',
                'items'       => [],
            ];
        }
);

The Versions

18/07 2018

dev-master

9999999-dev

Better controller for `digitalwand/digitalwand.admin_helper` which doesn't require any bitrix-module and silly class naming

  Sources   Download

MIT

The Requires

 

by Sergey Gripinskiy

18/07 2018

v0.0.3

0.0.3.0

Better controller for `digitalwand/digitalwand.admin_helper` which doesn't require any bitrix-module and silly class naming

  Sources   Download

MIT

The Requires

 

by Sergey Gripinskiy

02/07 2018

v0.0.2

0.0.2.0

Better controller for `digitalwand/digitalwand.admin_helper` which doesn't require any bitrix-module and silly class naming

  Sources   Download

MIT

The Requires

 

by Sergey Gripinskiy

29/06 2018

v0.0.1

0.0.1.0

Better controller for `digitalwand/digitalwand.admin_helper` which doesn't require any bitrix-module and silly class naming

  Sources   Download

MIT

The Requires

 

by Sergey Gripinskiy