jadob / objectable
将PHP对象转换为HTML表格
v0.4.18
2024-08-17 20:12 UTC
Requires
- php: ^8
- doctrine/annotations: ^1.13
- symfony/property-access: >= 5.4.4 || >= 6.0.5
README
通过使用doctrine/annotations
将对象数组转换为HTML表格或您想要的任何内容。包含Twig扩展。灵感来自我的旧扩展包。
需要PHP 7.3。
注解参考
开始之前的一个重要事项
示例中的属性仅为了示例而设置为public
。Objectable使用symfony/property-access
来访问值。
Objectable\ActionField
为每一行添加操作字段。
属性
name
- 必需 动作名称。对于对象中定义的每个动作,该值应该是唯一的。此值还将作为具有objectable-action-
前缀的类以及data-objectable-action
属性的值传递给操作字段。path
- 用户将被重定向到的URL(或路由标识符)。(必需)label
- 显示在给定按钮中的值。(必需)property
- 将传递给ActionFieldTransformer以生成重定向URL的属性。如果为null,则整个对象将被传递。key
- 从property
字段传递值的参数名称。
示例
<?php use Jadob\Objectable\Annotation as Objectable; /** * @Objectable\Row() * @Objectable\ActionField(name="edit", label="Edit User", path="/user/edit", property="id") * @Objectable\ActionField(name="remove", label="Remove User", path="/user/remove", property="id") */ class User {/* ... */}
对于ID为1的用户对象,默认ActionFieldTransformer将创建两个按钮及其URL
/user/edit?id=1
/user/remove?id=1
Objectable\Header
定义一个将渲染的字段并为它们设置列名。
Objectable将仅查找通过注解传递的order
值。对象中编写的属性的顺序无关紧要。
属性
title
- 当前属性的列名。(必需)order
- 当前列的位置。(必需)
示例
<?php use Jadob\Objectable\Annotation as Objectable; class Person { /** * @Objectable\Header(title="ID", order=1) * @var int */ public $id; /** * @Objectable\Header(title="Last Name", order=3) * @var string */ public $lastName; /** * @Objectable\Header(title="First Name", order=2) * @var string */ public $firstName; }
这些将按以下方式渲染
转换器参考
允许修改渲染的内容以适应您的业务需求。
自定义头部转换器
使用自定义头部转换器,您可以轻松翻译头部等。
示例
<?php class UpperCaseTransformer implements \Jadob\Objectable\Transformer\HeaderTransformerInterface { /** * @param string $title * @param string $className * @param string $propertyName * @return string */ public function transform(string $title, string $className, string $propertyName): string { return \strtoupper($title); } } /** @var \Jadob\Objectable\Objectable $objectable */ $objectable->setHeaderTransformer(new UpperCaseTransformer());
自定义操作字段转换器
@TODO
在1.0.0
版本发布之前需要完成的事项
- 奇偶行
- 操作字段
- 测试
- 自定义模板渲染器
- 头部中的
translatable
参数 - 定义属性的自定义获取器
测试
@TODO
许可证
MIT,有关更多信息请参阅LICENSE文件