jadob/objectable

将PHP对象转换为HTML表格

v0.4.18 2024-08-17 20:12 UTC

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文件