laravolt / suitable
Laravel应用语义化UI表格构建器
v4.0.2
2020-02-21 01:34 UTC
Requires
- php: >=7.3
- illuminate/auth: ^6.0
- illuminate/support: ^6.0
- laravolt/support: ^4.0.2
- niklasravnsborg/laravel-pdf: ^4.0
- rap2hpoutre/fast-excel: ^1.3.1
- dev-master / 4.1.x-dev
- v4.0.2
- v4.0.1
- 3.6.12
- 3.6.11
- 3.6.10
- 3.6.9
- 3.6.8
- 3.6.7
- 3.6.6
- 3.6.5
- 3.6.4
- 3.6.3
- 3.6.2
- 3.6.1
- 3.6.0
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.1
- 3.4.0
- 3.3.14
- 3.3.13
- 3.3.12
- 3.3.11
- 3.3.10
- 3.3.9
- 3.3.8
- 3.3.7
- 3.3.6
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.0
- 2.x-dev
- 2.7.0
- 2.6.0
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.1
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.0
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- 0.5
- 0.4
- 0.3
- 0.2
- 0.1
- dev-dev
This package is auto-updated.
Last update: 2024-08-25 21:25:44 UTC
README
Laravel语义化UI表格构建器。
版本兼容性
安装
安装包
composer require laravolt/suitable
服务提供者
对于Laravel >= 5.5,请跳过此步骤。
Laravolt\Suitable\ServiceProvider::class,
外观
对于Laravel >= 5.5,请跳过此步骤。
'Suitable' => Laravolt\Suitable\Facade::class,
用法
基础
{!! Suitable::source(User::all()) ->columns([ \Laravolt\Suitable\Columns\Numbering::make('No'), ['header' => 'Nama', 'field' => 'name'], ['header' => 'Email', 'field' => 'email'], ]) ->render() !!}
列定义
字段
{!! Suitable::source(User::all()) ->columns([ ['header' => 'Email', 'field' => 'email'], ['header' => 'Bio', 'field' => 'profile.bio'], // nested attribute ]) ->render() !!}`
视图
{!! Suitable::source(User::all()) ->columns([ ['header' => 'Address', 'view' => 'components.address'], ]) ->render() !!}`
views/components/address.blade.php
<address> Address:<br> {{ $data->address_1 }}<br> {{ $data->address_2 }}<br> {{ $data->city }}, {{ $data->state }} </address>
原始数据
{!! Suitable::source(User::all()) ->columns([ [ 'header' => 'Roles', 'raw' => function($data){ // do anything here and don't forget to return String return $data->roles->implode('name', ', '); // output: "role1, role2, role3" } ], ]) ->render() !!}`
ColumnInterface
{!! Suitable::source(User::all()) ->columns([ new \App\Columns\StatusColumn('Status'), ]) ->render() !!}
合约
<?php namespace Laravolt\Suitable\Columns; interface ColumnInterface { public function header(); public function headerAttributes(); public function cell($cell, $collection, $loop); public function cellAttributes($cell); public function sortable(); }
实现
statusColumn.php
<?php namespace App\Columns; use Laravolt\Suitable\Columns\ColumnInterface; class StatusColumn implements ColumnInterface { protected $header; public function __construct($header) { $this->header = $header; } public function header() { return $this->header; } public function cell($cell, $collection, $loop) { return sprintf("<div class='ui label'>%s</div>", $cell->status); } public function headerAttributes() { return []; } public function cellAttributes($cell) { return []; } }
高级用法
自动检测
<?php namespace App\Http\Controllers; use App\User; use Illuminate\Routing\Controller; use Laravolt\Suitable\Plugins\Pdf; use Laravolt\Suitable\Plugins\Spreadsheet; use Laravolt\Suitable\Tables\BasicTable; class SuitableController extends Controller { public function __invoke() { $table = (new BasicTable(new User())); return $table->view('etalase::example.suitable'); } }
自定义表格视图
表格视图定义
<?php namespace App\Table; use Laravolt\Suitable\Columns\Date; use Laravolt\Suitable\Columns\DateTime; use Laravolt\Suitable\Columns\Id; use Laravolt\Suitable\Columns\Numbering; use Laravolt\Suitable\Columns\Text; use Laravolt\Suitable\TableView; class UserTable extends TableView { protected function columns() { return [ Numbering::make('No'), Id::make('id'), Text::make('name'), Text::make('email'), Date::make('created_at'), DateTime::make('updated_at'), ]; } }
<?php namespace Laravolt\Etalase\Http\Controllers; use App\User; use Illuminate\Routing\Controller; use App\Table\UserTable; use Laravolt\Suitable\Plugins\Pdf; use Laravolt\Suitable\Plugins\Spreadsheet; class SuitableController extends Controller { public function __invoke() { $users = User::autoSort()->paginate(5); $userTable = new UserTable($users); $table = $userTable ->plugins([ (new Pdf('users.pdf')), (new Spreadsheet('users.xls')), ]); return $table->view('etalase::example.suitable'); } }
内置列
Laravolt\Suitable\Columns\Avatar
Laravolt\Suitable\Columns\Boolean
Laravolt\Suitable\Columns\Checkall
Laravolt\Suitable\Columns\Date
Laravolt\Suitable\Columns\DateTime
Laravolt\Suitable\Columns\Id
Laravolt\Suitable\Columns\Image
Laravolt\Suitable\Columns\Numbering
Laravolt\Suitable\Columns\Raw
Laravolt\Suitable\Columns\RestfulButton
Laravolt\Suitable\Columns\Text
Laravolt\Suitable\Columns\View
路线图
- 将
TableView
重命名为Table
- 将工具栏重命名为
Segment\Item
- 将DropdownFilter重命名为
DropdownLink