wongyip / laravel-renderable
Render Eloquent model with ease.
Installs: 1 298
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=8.2
- ezyang/htmlpurifier: ^4.17
- laravel/framework: *
- rcrowe/twigbridge: *
- wongyip/html-beautify: ^1.0
- wongyip/html-tags: *
- wongyip/phphelpers: *
- dev-master
- v1.3.0
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
- v0.12.0
- v0.11.1
- v0.11.0
- v0.10.0
- v0.9.2
- v0.9.1
- 0.9.0
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.1
- v0.6.0
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.0
- v0.3.1
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.2
- v0.1.1
- v0.1.0
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
This package is auto-updated.
Last update: 2025-03-29 01:00:18 UTC
README
Present an Eloquent model or an associative array in HTML table view.
Installation
Install as a package to a Laravel project
composer require wongyip/laravel-rendetable
Usage
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();
Output
<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>
Output Explained
- The main output is a
<table>
tag wrapped in a container<div>
tag. - The
Renderable
object generates its ownRenderable.id
randomly on instantiate (12345678
), which is changeable with theRenderable.id()
method. - The main tag will have an
id
attribute derived from theRenderable.id
, prefixed withrenderable-
by default, configurable via/config/renderable.php
) and changeable on run-time by updating theRenderable.options.idPrefix
property. - The container tag's ID is further suffixed with
-containter
by default, configurable via/config/renderable.php
) and changeable on run-time by updating theRenderable.options.containerIdSuffix
property. - Field labels and values are rendered base on the setup.
Notes
- Output is formatted with HTML Beautify.
- Output is sanitized with HTML Purifier.
- The
Renderable
object is designed to render once only, useclone
keyword to create multipleRenderable
objects may end up fall into the variable referencing nightmare, do Deep Copy if multiple instance is really needed.