wongyip/laravel-renderable

此包的最新版本(v1.2.5)没有可用的许可证信息。

轻松渲染Eloquent模型。

v1.2.5 2024-09-30 06:27 UTC

README

以HTML表格视图呈现Eloquent模型或关联数组。

安装

将作为包安装到Laravel项目中

composer require wongyip/laravel-rendetable

用法

use Wongyip\Laravel\Renderable\Renderable;

// Attributes to be rendered, can be an Eloquent model.
$user = [
    'id' => 1999,
    'surname' => 'SOME',
    'last_name' => 'Body',
    'roles' => ['Operator', 'Editor', 'Supervisor'],
    'gender' => 'Male',
    'birthday' => '29th Feb',
    'active' => false
];

// Render all attributes except 'gender' and 'birthday'.
$included = true;
$excluded = ['gender', 'birthday'];

// Custom Labels
$labels = [
    'surname' => 'First Name',
    'active' => 'Status'
];

// Make
$r = Renderable::table($user, $included, $excluded);

// Render as <ul>, expected array value.
$r->typeUL('roles');

// Print 'Active' and 'Blocked' when attribute 'active' is TRUE and FALSE respectively.
$r->typeBool('active', 'Active', 'Blocked');

// Overwrite auto-generated labels.
$r->labels($labels);
    
// To HTML.
echo $r->render();

输出

<div id="renderable-12345678-container" class="renderable-container">
    <table id="renderable-12345678" class="table table-bordered table-strip renderable-table">
        <thead class="thead-light">
            <tr>
                <th class="renderable-field-header">Field</th>
                <th class="renderable-value-header">Value</th>
            </tr>
        </thead>
        <tbody class="renderable-body">
            <tr class="field-id">
                <th class="renderable-label">ID</th>
                <td class="renderable-value">1999</td>
            </tr>
            <tr class="field-surname">
                <th class="renderable-label">First Name</th>
                <td class="renderable-value">SOME</td>
            </tr>
            <tr class="field-last_name">
                <th class="renderable-label">Last Name</th>
                <td class="renderable-value">Body</td>
            </tr>
            <tr class="field-roles">
                <th class="renderable-label">Roles</th>
                <td class="renderable-value">
                    <ul>
                        <li>Operator</li>
                        <li>Editor</li>
                        <li>Supervisor</li>
                    </ul>
                </td>
            </tr>
            <tr class="field-active">
                <th class="renderable-label">Status</th>
                <td class="renderable-value">Blocked</td>
            </tr>
        </tbody>
    </table>
</div>

输出说明

  • 主要输出是一个包裹在容器标签<div>中的<table>标签。
  • Renderable对象在实例化时会随机生成自己的Renderable.id(例如12345678),这可以通过Renderable.id()方法进行更改。
  • 主要标签将具有从Renderable.id派生的id属性,默认情况下以renderable-为前缀,可通过/config/renderable.php配置,并可通过更新Renderable.options.idPrefix属性在运行时更改。
  • 容器标签的ID默认进一步附加-container后缀,可通过/config/renderable.php配置,并可通过更新Renderable.options.containerIdSuffix属性在运行时更改。
  • 字段标签和值根据设置进行渲染。

注意

  • 输出使用HTML Beautify格式化。
  • 输出使用HTML Purifier进行清理。
  • Renderable对象设计为只渲染一次,使用clone关键字创建多个Renderable对象可能会陷入变量引用噩梦,如果确实需要多个实例,请使用Deep Copy