webarchitect609/bitrix-admin-helper-controller

此包已被 废弃 并不再维护。未建议替代包。

比 `digitalwand/digitalwand.admin_helper` 更好的控制器,无需任何 bitrix 模块和愚蠢的类命名

v0.0.4 2018-08-07 10:27 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:13:49 UTC


README

请注意:由于与 digitalwand/digitalwand.admin_helper 的过度复杂性,该包已被废弃,存在大量错误,实际上已被遗弃。

替换 digitalwand/digitalwand.admin_helper 包的控制器,允许不创建自己的 Bitrix 模块即可在后台管理中创建 CRUD 页面。

请注意:目前为不稳定版本。

要使用此库,请

1 通过 composer 安装

composer require webarchitect609/bitrix-admin-helper-controller

此时将在 bitrix/modules 中安装 digitalwand/digitalwand.admin_helper 包。如果需要将其安装在 local/modules,请将以下内容添加到 composer.json

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

2 根据示例文件 scripts/admin-helper-controller.php 创建连接模块的脚本,并使用规则将其连接到 urlrewrite.php 文件

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

CONDITION 路径中,不要使用低于 /bitrix/admin 的级别,因为添加到菜单并按此 URL 跳转后,所有其他链接将无法使用。

3 namespace 的前两级是根据模块名称生成的,vendor 和 package 由点分隔。因此,必须确保所有帮助器和视觉接口的类都在第三级及更高级别中定义,而帮助器应指定 namespace 的前两级 $module。在此过程中,模块名称应与 namespace 的定义一致。否则,由于尽管 namespace 不区分大小写,但类自动加载是在区分大小写模式下进行的(因为其中使用了类似 Unix 的文件系统),因此找不到类。

例如,

<?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 根据 urlrewrite.php 中的规则,帮助器必须重新定义 $routerUrl(请参阅上面的示例)提示:由于静态成员不能以常规方式重写,因此建议使用常量以避免重复,如果使用多个帮助器。

5 如果系统中存在指定的 $module 帮助器 Bitrix 模块,并且需要显式连接它,则使用

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

在连接 $module 之前,将字符串转换为小写。默认情况下,不会尝试连接模块。

6 帮助器类名应按模式 <Entity_name>(List|Edit)Helper 构建,而接口类名应按相应模式 <Entity_name>AdminInterface 构建

7 帮助器必须严格位于与接口相同的级别。

所有这些限制和需要执行的繁琐规则都是由于 digitalwand/digitalwand.admin_helper 包以与 Bitrix 相似的假面向对象风格编写,尽管它解决了非常紧迫的问题。

8 通过注册事件处理器 main:OnBuildGlobalMenu 并从帮助器获取列表 URL 来添加到菜单。

\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'       => [],
            ];
        }
);