sammaye / laravel-gridview
快速构建Web应用中最常用组件的原型:网格视图
dev-master
2019-09-17 20:00 UTC
Requires
- php: >=5.4.0
- illuminate/support: >=5.0
This package is auto-updated.
Last update: 2024-09-18 06:26:17 UTC
README
这是一个基于Yii2网格视图的实现,其API简单到无需解释。
尽管这可以在生产环境中使用,但它最好用作更好的东西的占位符。
为什么?
为什么不想快速构建Web应用中最常用组件的原型?
你可以直接复制并粘贴代码,为每种记录类型进行定制。
这提供了哪些别人没有的东西?
简单。这不是一个小部件,它只是一个为@include
提供的辅助工具。它为网格视图的每个部分提供了一系列函数。
实际上,它的构建非常简单和自由,你可以手动实例化每个类(包括列)并在HTML的任何部分单独渲染。
需要放入什么查询?
除了分页之外的所有内容。
此插件不会为您执行过滤或搜索逻辑。
所以,例如(实际上不要使用此示例),如果你的网格名称为user
$users = User::query() ->withTrashed() ->where('email', 'like', input('user-email')) ->orderBy( ltrim(input('user-sort'), '-'), strpos(input('user-sort'), '-') === 0 ? 'DESC' : 'ASC' ) );
这使得它非常适应变化和重构,例如使用vue.js。
这需要JavaScript吗?
不,这完全取决于你自己的选择。
有示例代码可以开始吗?
当然,这是一个视图中的示例
{!! \sammaye\Grid\Grid::make('user') ->setData($users_q) ->setDataRowAttributes(function($grid, $row){ $options = []; if ($row->trashed()) { $options['class'] = 'table-danger'; } return $options; }) ->setHeaderRowAttributes(['class' => 'thead-dark']) ->setColumns([ \sammaye\Grid\Column::make('id') ->setDataCellTag('th') ->setLabel(__('#')) ->setAttributes(['scope' => 'row']), \sammaye\Grid\Column::make('email') ->setDataContent(function($column, $row){ return $row->email . ( $row->hasVerifiedEmail() ? '<span class="text-success">' . __( 'Verified: :date', ['date' => $row->email_verified_at] ) . '</span>' : '<span class="text-danger">' . __('Not Verified') . '</span>' ); }), \sammaye\Grid\Column::make('first_name'), \sammaye\Grid\Column::make('last_name'), \sammaye\Grid\Column::make('identity_verified') ->setDataContent(function($column, $row){ if($row->hasVerifiedIdentity()){ return '<span class="text-success">' . __( 'Verified: :date', ['date' => $row->identity_verified_at] ) . '</span>'; }elseif($row->hasPendingVerifiedIdentity()) { return '<span class="text-warning">' . __( 'Pending: :date', ['date' => $row->identity_verification_requested_at] ) . '</span>'; }elseif($row->hasRejectedVerifiedIdentity()){ return '<span class="text-danger">' . __( 'Rejected: :date', ['date' => $row->identity_verification_rejected_at] ) . '</span>'; }else{ return '<span class="text-muted">' . __('Awaiting') . '</span>'; } }), \sammaye\Grid\Column::make('has_documents') ->setDataContent(function($column, $row){ return $row->verificationDocuments()->count() > 0 ? '<span class="text-success">Yes</span>' : '<span class="text-danger">No</span>'; }), \sammaye\Grid\Column::make('created_at'), \sammaye\Grid\Column::make('updated_at'), \sammaye\Grid\Column::make('deleted_at'), \sammaye\Grid\ActionColumn::make('actions') ->setEditButton(function($column, $row){ return route('admin.user.edit', ['user' => $row]); }, __('Edit')) ->setDeleteButton(function($column, $row){ return route('admin.user.destroy', ['user' => $row]); }, __('Delete')) ->setRestoreButton(function($column, $row){ return route('admin.user.restore', ['user' => $row]); }, __('Restore')) ]) ->getTable() !!}