lloricode / laravel-html-table
Html table generator for laravel
Fund package maintenance!
www.paypal.com/donate?hosted_button_id=V8PYXUNG6QP44
Installs: 23 823
Dependents: 1
Suggesters: 0
Security: 0
Stars: 15
Watchers: 5
Forks: 0
Open Issues: 1
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.16.2
Requires (Dev)
- composer-runtime-api: ^2.2
- larastan/larastan: ^2.9.2
- laravel/pint: ^1.14
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.34.1
- phpstan/phpstan: ^1.10.59
- rector/rector: ^1.0.2
- spatie/pest-plugin-snapshots: ^2.1.0
README
Generate Html Table with data from array/object.
Installation
You can install the package via composer:
composer require lloricode/laravel-html-table
Usage
Sample in view
$headers = ['col1', 'col2']; $data = [ [ 'Lloric', 'Garcia', ], [ 'Foo', 'Bar', ], [ 'Foo1', 'bar11', ], [ 'tst', 'tesss', ], ]; $attributes = 'class="table"'; // Or $attributes = ['myclass' => 'test_val']; {!! Table::generate($headers, $data) !!} {!! Table::generate($headers, $data, $attributes) !!} // Model way {!! Table::generateModel( ['Id', 'Name', 'Email'], // Column for table 'App\User' // Model ,['id', 'name', 'email'], // Fields from model 0, // Pagination Limit, if 0 all will show 'border="1"' // Attributes sample js/css ) !!} {{ Table::links() }} // Generate this when limit is not 0 // then you can add a links {!! Table::optionLinks('my.route.name') ->modelResult(function($query){ // you can add filter if you are using model generate $query->where('user_id', auth()->user()->id); return $query; }) ->generateModel( ['Id', 'Name', 'Email'], // Column for table 'App\User' // Model ,['id', 'name', 'email'], // Fields from model 5, // Pagination Limit, if 0 all will show 'border="1"' // Attributes sample js/css ) !!} // you can specify more args // 1st route name, 2nd header label, and 3rd is the every row label {!! Table::optionLinks('my.route.name', 'my option', 'view') ->generateModel( ['Id', 'Name', 'Email'], // Column for table 'App\User' // Model ,['id', 'name', 'email'], // Fields from model 5, // Pagination Limit, if 0 all will show 'border="1"' // Attributes sample js/css ) !!}
This is all default values html tags
$attributes = [ // Main Table 'table' => '<table>', 'table_end' => '</table>', // Head 'head' => '<thead>', 'head_end' => '</thead>', 'head_row' => '<tr>', 'head_row_end' => '</tr>', 'head_cell' => '<th>', 'head_cell_end' => '</th>', // Data body 'body' => '<tbody>', 'body_end' => '</tbody>', 'body_row' => '<tr>', 'body_row_end' => '</tr>', 'body_cell' => '<td>', 'body_cell_end' => '</td>', // Alternative 'alt_body_row' => '<tr>', 'alt_body_row_end' => '</tr>', 'alt_body_cell' => '<td>', 'alt_body_cell_end' => '</td>', ]; {!! Table::generate($headers, $data, $attributes) !!}
Sample Output
<table myclass="test_val"><thead><tr><th>col1</th><th>col2</th></tr></thead><tbody><tr><td>Lloric</td><td>Garcia</td></tr><tr><td>Foo</td><td>Bar</td></tr><tr><td>Foo1</td><td>bar11</td></tr><tr><td>tst</td><td>tesss</td></tr></tbody></table>
Adding attributes in cell data
$header = ['Date', 'Description', 'Amount']; $datas = [ [ ['data' => '1', 'scope' => 'row'], 'Mark', 'Otto', ], [ ['data' => '2', 'scope' => 'row'], 'foo', 'varr', ], ]; {!! Table::generate($header, $datas, ['class'=>'table']) !!} <table class="table"> <thead> <tr> <th>Date</th> <th>Description</th> <th>Amount</th> </tr> </thead> <tbody> <tr> <td scope="row">1</td> <td>Mark</td> <td>Otto</td> </tr> <tr> <td scope="row">2</td> <td>foo</td> <td>varr</td> </tr> </tbody> </table>
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.