如何从包中创建自定义航海者表单字段?

How can I create a custom voyager Form Field from package?

我正在尝试创建一个存储库作曲家包来为 Voyager 创建自定义表单字段,我发现了这个示例:https://github.com/bnku/extended-bread-form-fields,但这对我不起作用。

那么,如何为 Voyager 构建自定义字段表单?结果将是这样的:

我尝试了这个存储库示例。

https://github.com/bnku/extended-bread-form-fields(我没用)

这是我的存储库测试:

https://github.com/manuel90/crop-image-field

这是我的 composer.json 我的包裹:

{
    "name": "manuel90/crop-image-field",
    "description": "New voyager form field to cut image when uploading",
    "authors": [
        {
            "name": "Manuel",
            "email": "testmlzra@gmail.com"
        }
    ],
    "require": {
        "tcg/voyager": "^1.1"
    },
    "autoload": {
        "psr-4": {
            "Manuel90\CropImageField\": "src/"
        }
    },
    "extra": {
        "laravel": {
            "providers": [
                "Manuel90\CropImageField\CropImageFieldServiceProvider"
            ]
        }
    }
}

我可以看到这些行有问题,它没有检测到 class "Voyager",但我不知道如何解决它:


if( class_exists('Voyager') ) {
    Voyager::addFormField(CropImageFormField::class);
}

https://github.com/manuel90/crop-image-field/blob/master/src/CropImageFieldServiceProvider.php#L34-L36 (根据文档,这是添加自定义表单的方法 Docs here

我希望在 BREAD 编辑部分看到输入类型选项中列出的新自定义字段,如下所示:

您需要将 Voyager::addFormField 调用移动到 boot() 方法,因为这算作 "piece of functionality",应该在 voyager 服务提供商正确注册后调用。

Voyager 的文档中缺少这一点,因为它们仅记录了在应用程序级别添加 FormFields 的用例,其中注册方法的调用在所有供应商服务提供商都已注册后运行。