wongyip / laravel-renderable
Render Eloquent model with ease.
Installs: 1 585
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/wongyip/laravel-renderable
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.4
- v1.3.3
- v1.3.2
- v1.3.1
- 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-10-27 03:49:59 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
Renderableobject generates its ownRenderable.idrandomly on instantiate (12345678), which is changeable with theRenderable.id()method. - The main tag will have an
idattribute derived from theRenderable.id, prefixed withrenderable-by default, configurable via/config/renderable.php) and changeable on run-time by updating theRenderable.options.idPrefixproperty. - The container tag's ID is further suffixed with
-containterby default, configurable via/config/renderable.php) and changeable on run-time by updating theRenderable.options.containerIdSuffixproperty. - Field labels and values are rendered base on the setup.
Notes
- Output is formatted with HTML Beautify.
- Output is sanitized with HTML Purifier.
- The
Renderableobject is designed to render once only, useclonekeyword to create multipleRenderableobjects may end up fall into the variable referencing nightmare, do Deep Copy if multiple instance is really needed.