Magento 2:与标准Grid.php相比,使用UI网格组件有什么好处?


23

因此,Magento 2引入了UI组件。

其中之一是UI组件网格(您可以在此处找到有关它的更多信息:Magento 2中的UI组件网格说明

创建自定义模块时,我坚持使用旧的Magento 1方法,并创建了一个Grid.php处理adminhtml网格的文件。

我想知道使用UI组件网格而不是Grid.php方法有什么好处?

Answers:


23

我将列出到目前为止找到的内容。

  • 可扩展性。您可以添加新的xml以添加新的列。
  • 通过代码配置。更少的逻辑代码,更多的声明性xml。
  • 网络流量减少。xml转换为json并发送到浏览器。同样,每个字段类型仅发送一次到浏览器,并且表单生成在客户端发生。
  • 新系统允许列重新排序和状态保存。

离题:我得到“内部信息”,该计划是将所有网格和表单移至UI组件。因此,您应该开始使用它们。


并不是很重要的话题,这正是我需要的反馈信息
拉斐尔(Raphael)在Digital Pianism上,2016年

@Raphael您可以通过ui_component保存书签。通过xml进行配置更多详细信息,请参见ui_bookmark表
mrtuvn

22

@ raphael-at-digital-pianism要求我发布以下列表,我认为adminhtml网格UI组件XML是错误的,所以这里是:

adminhtml网格UI组件XML有什么问题?

  • 开发期间反馈周期慢
  • 很难明白
  • 如果出现问题,很难调试(主要是通过与内核中的XML进行比较)
  • 公开了很多实现细节
  • 鼓励复制和粘贴
  • XML并非供人类读写
  • 难以测试
  • 不清楚其他可用选项
  • 很多样板和魔术(两全其美)
  • 耦合到显示数据库表数据的想法
  • 文件中有很多重复的名称字符串

你说“有更好的解决方案”?

好吧,我没有。但是,这是一个粗略的想法,我作为开发人员如何希望能够创建adminhtml网格和表单。

  • 创建一个实现 GridDataSourceInterface
  • 网格组件使用一种GridDataSourceInterface::getGridItemType()方法来获取类名称或接口名称
  • 接口被反映出来,所有的吸气剂被用来确定可能的列
  • 从返回类型推断出列类型
  • 不能自动推断为有效列类型的类型将被忽略。
  • GridDataSourceInterface实现实例可用于在需要时使用漂亮的描述性方法来配置非默认可见性和列类型。

好处:

  • IDE通过方法自动补全辅助定义网格(和表单)
  • 合理的默认值
  • 实施不可知
  • 对于简单的实体,只需要编写很少的代码
  • 与XML方法相比,没有功能损失
  • 通过拦截器可扩展
  • 如果完成了类接口的定义,则网格和表单也可以像XML一样声明式(但要简单得多)
  • 匹配Magento 2s的“思维方式”以获取服务合同类
  • 无需更改与前端代码的当前交互(在线上的流量相同)
  • 前端列排序和配置可以像现在一样继续工作
  • 没有粗俗的XML

关于原始问题,我认为使用旧的Magento 1样式的块来构建adminhtml接口是不正确的。
我只是在提倡新的基于XML的网格声明应尽快替换为更好的东西。


?这是真的,难以理解UI component.Are你以为的Magento会与组件我未来的UI电网另一种解决方案。它成为头缓存我....... DONOT找到任何合适的博客(:
阿米特·贝拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.