bacao / laravel-admin-hasmany-extra
Laravel-admin helpers for hasMany multiple image upload and nested conditional fields.
Package info
github.com/song0223/laravel-admin-ext-hasmany
pkg:composer/bacao/laravel-admin-hasmany-extra
1.0.1
2026-04-02 10:28 UTC
Requires
- php: >=7.2.5
- encore/laravel-admin: ^1.8
This package is auto-updated.
Last update: 2026-04-03 04:49:44 UTC
README
laravel-admin 扩展,提供两块能力:
hasMany里的多图上传、排序、删除hasMany/NestedForm里的原生链式->when(...)条件显示hasMany/NestedForm里的table(...)JSON 表格兼容
安装
composer require bacao/laravel-admin-hasmany-extra
字段注册
扩展安装后会自动注册:
$form->hasmanyExtraMultipleImage('banner', 'Banner');
如果你想保持旧项目里的方法名,也可以在项目自己的 app/Admin/bootstrap.php 里再加一行:
\Encore\Admin\Form::extend('hasmanyMultipleImage', \Encore\HasmanyExtra\Fields\HasManyMultipleImage::class);
多图上传
多图上传的值解析、旧图排序同步、单张删除都已经内置:
$form->hasMany('items', '商品项目', function (Form\NestedForm $form) { $form->hasmanyExtraMultipleImage('banner', 'Banner图') ->uniqueName() ->removable() ->sortable(); });
条件显示
安装这个扩展后,hasMany 里的 radio()->when(...) 可以直接按 laravel-admin 原生写法使用:
$form->hasMany('items', '商品项目', function (Form\NestedForm $form) { $form->radio('type', '类型')->options([ 1 => '厨师介绍', 2 => '餐品介绍', 3 => '菜单介绍', 4 => '酒店介绍', ])->when(3, function (Form\NestedForm $form) { $form->textarea('menu', '菜单'); }); });
hasMany 里的 table
在 NestedForm 里可以继续按接近 laravel-admin 原生的写法使用(目前只支持text和textarea):
$form->hasMany('items', '商品项目', function (Form\NestedForm $form) { $form->table('menu', '子菜单', function ($table) { $table->text('name', '名称'); $table->textarea('desc', '描述'); }); });
删除接口
扩展会自动注册后台路由:
POST /admin/hasmany-extra/delete
用于处理 hasMany 子项里的单张旧图删除。