iiifx-production/yii2-autocomplete-helper

Yii2 自动完成助手

v3.1.0 2021-05-30 22:30 UTC

README

为 Yii2 中的自定义组件生成自动完成。

SensioLabsInsight

Latest Version on Packagist Total Downloads Code Coverage Software License

[英文文档] [俄语文档]

默认情况下,Yii2 中自定义组件的自动完成功能不工作。IDE 看不到添加的组件,这会给操作带来不便。

此扩展允许您自动生成一个包含自动完成 PHPDoc 块的文件,IDE 将使用该文件识别应用配置中的所有组件。

安装

使用 Composer

composer require "iiifx-production/yii2-autocomplete-helper"

配置

安装后,您需要一次性设置组件以使其工作。

对于 Yii2 Basic,在 @app/config/console.php

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
        ],
        # ...
    ]

对于 Yii2 Advanced,在 @console/config/main.php

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
        ],
        # ...
    ]

使用

在控制台生成自动完成

php yii ide-components

生成器会自动检测应用类型,读取所有配置文件,并将自动完成文件生成到应用根目录。

Yii2 IDE auto-completion helper
Vitaliy IIIFX Khomenko, 2019

Success: /home/iiifx/Projects/myProject/_ide_components.php

重要:为了让 IDE 不混淆两个 Yii 类,必须将主要的 Yii 类文件标记为文本文件 - 示例。主要类位于路径:@vendor/yiisoft/yii2/Yii.php

高级定制

有时应用的结构与标准不同,需要更改生成器的行为。

以下是一些可能的配置选项示例。

更改组件名称

如果您需要将 自动完成 名称更改为另一个名称,这很简单

    'bootstrap' => ['log', 'new-component-name'], # <-- new component name
    'components' => [
        'new-component-name' => [ # <-- new component name
            'class' => 'iiifx\Yii2\Autocomplete\Component',
        ],
        # ...
    ]

当生成器在控制台运行时,您需要传递正确的组件名称

php yii ide-components --component=new-component-name

更改环境

默认情况下,只有在 YII_ENV = "dev" 环境下才能启动生成器。

您可以更改环境

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
            'environment' => 'local', # <-- environment
        ],
        # ...
    ]

更改生成器控制器

默认情况下,生成器使用控制台控制器来创建自动完成。

您可以替换默认控制器,扩展它,或添加您自己的实现

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
            'controllerMap' => [
                'ide-components' => 'iiifx\Yii2\Autocomplete\Controller', # <-- default controller
                'my-custom-generator' => 'path\to\your\custom\Controller', # <-- your controller
            ],
        ],
        # ...
    ]

现在您可以运行您的控制器

php yii my-custom-generator

默认控制器的链接:source/Controller.php

更改自动完成文件

默认情况下,自动完成文件的名称为 _ide_components.php,并将放置在应用根目录。

您可以更改文件名称和位置

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
            'result' => '@app/new-file-name.php' # <-- name and path
        ],
        # ...
    ]

文件路径必须是框架别名的相对路径。示例:@common/../new-file-name.php

特殊配置文件

有时需要手动指定要从中生成自动完成的配置文件。

在这种情况下,生成器不会搜索配置,而是直接使用此列表。

对于 Yii2 Advanced

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
            'config' => [
                '@common/config/main.php', # <-- config list
                '@common/config/main-local.php',
                '@console/config/main.php',
                '@console/config/main-local.php',
                '@backend/config/main.php',
                '@backend/config/main-local.php',
                '@frontend/config/main.php',
                '@frontend/config/main-local.php',
            ],
        ],
        # ...
    ]

对于 Yii2 Basic

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
            'config' => [
                '@app/config/console.php', # <-- config list
                '@app/config/web.php',
            ],
        ],
        # ...
    ]

配置分组

在大项目中,有时需要根据开发阶段生成不同的自动完成文件。

您可以分组配置文件,并只为特定组生成自动完成。

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
            'config' => [
                'frontend' => [
                    '@common/config/main.php', # <-- frontend group
                    '@common/config/main-local.php',
                    '@frontend/config/main.php',
                    '@frontend/config/main-local.php',
                ],
                'backend' => [
                    '@common/config/main.php', # <-- backend group
                    '@common/config/main-local.php',
                    '@backend/config/main.php',
                    '@backend/config/main-local.php',
                ],
                'api' => [
                    '@common/config/main.php', # <-- api group
                    '@common/config/main-local.php',
                    '@common/../api/config/main.php',
                    '@common/../api/config/main-local.php',
                ],
            ],
        ],
        # ...
    ]

现在您可以生成所需组的自动完成

php yii ide-components --config=api

配置应用类

某些项目有时可以使用覆盖的应用类进行 Web 和控制台。

您可以通过配置中的适当设置来完成此操作。

    'bootstrap' => ['log', 'autocomplete'],
    'components' => [
        'autocomplete' => [
            'class' => 'iiifx\Yii2\Autocomplete\Component',
            'webAppClass' => '\full\namespace\to\WebApplicationClass',
            'consoleAppClass' => '\full\namespace\to\ConsoleApplicationClass',
        ],
        # ...
    ]