kleisli/ milly-crudui
Requires
- kleisli/milly-sortable: @dev
- kleisli/milly-tools: @dev
- neos/fusion-form: *
- neosloves/iconify: @dev
README
为Neos.Flow实体构建管理UI
来自Milly.CrudUI.Showcase的示例Neos后端UI
模型-视图-控制器
领域模型和仓库
使用Milly.CrudUI,您可以管理任何flow实体。
自定义模型
视图
Milly.CrudUI默认加载融合模板,但您可以根据需要创建自己的模板。
来自Milly.CrudUI.Showcase的示例索引视图
来自Milly.CrudUI.Showcase的示例编辑视图,包含与Tracks的关系
来自Milly.CrudUI.Showcase的示例创建视图
自定义视图
控制器
Milly.CrudUI可用于Neos后端模块或与常规ActionControllers一起使用,为前端用户提供CRUD功能。
Neos后端模块
class MyModelController extends AbstractModuleController
{
use CrudControllerTrait;
}
对于Neos前端或纯Flow应用程序
class MyModelController extends ActionController
{
use CrudControllerTrait;
}
自定义控制器
配置
必须为每个模型定义配置设置。在配置文件Configuration/Settings.CrudUI.MyModel.yaml
中定义了模型MyModel
。
Milly:
CrudUI:
entities:
<MyVendor\MyPackage\Domain\Model\MyModel>:
readonly: true
label:
one: 'My model'
many: 'My models'
parent: 'parentProperty'
views: []
properties: []
relations: []
标签
label
:在UI中实体类标签的单数和复数形式
父级
parent
:如果您想管理嵌套结构,可以设置一个属性,该属性是当前模型的父级引用。父模型必须配置对子模型的relation
。
视图配置
可以为每个视图定义一个属性数组,这些属性应该被渲染。
views:
index:
properties: [<textProperty>, <imageProperty>]
show:
properties: []
edit:
properties: []
relation:
properties: []
export:
properties: []
视图配置中的关系配置指定在父模型的show
视图中显示模型时显示哪些模型属性。
视图配置是可选的。如果没有为视图定义视图配置,则显示所有属性并应用默认设置。
自定义视图配置
属性配置
为了使属性可显示或可编辑,必须将其添加到properties
配置中。
properties:
<textProperty>: []
<titleProperty>:
label: 'Title'
readonly: true
label
: 在 UI 中如何标记属性
如果没有属性配置
- 则使用默认类型
string
- 标签将从 xlf 文件
Model/MyModel.xlf
中获取,属性名称作为 trans-unit id。请参见 MyModel.xlf 的示例。- 如果没有此类文件或键,则属性名称将用作标签
properties:
<imageProperty>:
type: image
<entityProperty>:
type: select
options:
repository: MyVendor\MyPackage\Domain\Repository\MyEntityRepository
PropertyEditors 提供表单字段来编辑属性,PropertyDisplayers 用于显示属性值。根据 type
定义了几个内置的 PropertyEditor 和 PropertyDisplayer 组合。对于某些类型,可以或必须定义 options
。
以下属性类型存在。有关详细信息,请参阅 属性类型 的详细列表
string
(默认值)textarea
number
email
select
用于 ManyToOne 属性multiSelect
用于 OneToMany 或 ManyToMany 属性booleanRadio
用于布尔属性booleanCheckbox
用于布尔属性date
用于 DateTime 属性dateTime
用于 DateTime 属性dateInterval
用于 DateInterval 属性image
用于\Neos\Flow\ResourceManagement\PersistentResource
属性audio
用于\Neos\Flow\ResourceManagement\PersistentResource
属性jsonList
用于带有@ORM\Column(type="flow_json_array")
注释的数组属性
自定义属性配置
关系配置
在技术上,属性也可以是关系(请参阅类型 select
或 multiSelect
),关系也是类的属性。
relations:
oneToManyProperty: []
manyToManyProperty:
label: 'Many'
readonly: true
Milly.CrudUI 中的区别是
- 当在
properties
中配置时,用户只能从现有对象中选择,而在relations
中,用户可以创建关系类的新对象 relations
中的对象列表可以显示对象的多个属性(在views.relation
中配置),而properties
中的对象则以标签列表的形式显示
为什么选择 Milly?
Milly Koss 是一位美国开创性的计算机程序员。女性计算机协会于 2000 年授予她 Ada Lovelace 奖。
我们需要了解我们如何可能重用经过测试的代码,并让机器帮助编程。随着我们编程,我们检查了整个过程,并试图考虑将这些步骤抽象化以将其纳入高级语言的方法。这导致了解释器、汇编器、编译器和生成器的开发——旨在操作或生成其他程序的程序,即自动编程。(Milly Koss,来源)
致敬
此包基于 Sandstorm.CrudForms 的想法并受到启发
此包的开发得到了 Profolio 的显著资助——这是一个职业选择和职业咨询的数字平台