radotch/cakephp-menu-manager

CakePHP 的菜单管理插件

安装: 20

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:cakephp-plugin

1.1.1 2018-12-19 07:33 UTC

This package is auto-updated.

Last update: 2024-09-29 05:08:23 UTC


README

要求

 - php >= 5.6.x (recomended >= 7.1)
 - cakephp  ^3.5

用于测试

 - phpunit ^5.7.14|^6.x

功能

  • 创建菜单
  • 创建与菜单关联的菜单链接
  • 菜单链接具有树形结构。这使得创建下拉菜单、手风琴或其他特定类型的菜单变得容易。
  • 菜单链接位置
  • 翻译

安装

您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。

推荐的安装方法是

composer require radotch/cakephp-menu-manager

加载插件

要在 Application.php 文件的 bootstrap() 方法中加载插件,请添加以下行

$this->addPlugin('MenuManager', ['autoload' => true, 'routes' => true]);

或者您可以使用对象方式

$plugin = new \MenuManager\Plugin(array $config = [])
            ->disable('bootstrap')
            ->enable('routes');
$this->addPlugin($plugin)

3.6.0 之前使用以下方法

Plugin::load('MenuManager', ['autoload' => true, 'routes' => true]);

现在您可以使用 MenuManager 插件了。

迁移

一旦插件可用,执行迁移以创建所需的表

$ path/to/project> bin/cake migrations migrate --plugin MenuManager

注意:如果 i18n 表已存在,迁移将不会尝试创建它。

有一个可用的初始种子,如果应用需要在启动时或仅用于测试目的,可以使用它

$ path/to/project> bin/cake migrations seed --plugin MenuManager

使用方法

控制面板

插件的控制面板可在 '/admin/menu-manager/' 上访问。请勿忘记限制访问

现在您可以创建菜单并添加菜单链接。

获取数据

要获取具有层次结构的菜单链接,请使用 'threaded' 查找器

// In controller
$menu = $this->TableRegistry::getTableLocator()
        ->get('MenuManager.Menus')
        ->find()
        ->contain(['MenuLinks' => ['finder' => 'threaded']])
        ->where([$whereConditions]);

或者

// In controller
$menuLinks = $this->TableRegistry::getTableLocator()
        ->get('MenuManager.MenuLinks')
        ->find('threaded')
        // Some query requirements
        ->where(['menu_id' => $menuId]);

菜单链接位置

当创建或更新菜单链接时,您可以设置链接的位置。如果在此点更改,则更改不会影响其他链接。所有其他菜单链接的位置都必须手动更改。

对此表示歉意,稍后当我有更多时间时,我会自动化它。同时,我也欢迎接受并感谢支持。

翻译

要能够添加关于菜单和菜单链接的翻译,请设置以下配置为关联数组或列表

$language = [
    'bg_BG' => 'Bulgarian',
    'en' => 'English',
    'en_US' => 'English (United States)'
];
Configure::write('MenuManager.Translation.Languages', $languages);

或者

$plugin = new \MenuManager\Plugin($config = []);
$plugin->setTranslations($languages);

我认为最好的地方是 Application.php 的 bootstrap() 方法。

显示菜单

在这个阶段,要显示菜单,您必须编写自己的代码。

祝您好运!