justinmoh/backpack-helper

为Laravel-Backpack CRUD提供的一个辅助包,允许使用CRUD组件作为链式方法。


README

Latest Version on Packagist Total Downloads

此包旨在通过使用laravel的facade,在使用Backpack CRUD时提供更友好的接口。

根据Backpack\Crud的工作方式,此包依赖于尾部方法来执行魔法。目前这些必需的尾部方法包括:

  • public function toField($extraConfigToBeMerged = []): CrudPanel
  • public function toColumn($extraConfigToBeMerged = []): CrudPanel
  • public function toFilter($extraConfigToBeMerged = []): void

所有其他方法都返回当前实例$this。为了进行方法链,请参考类源代码中的API示例

CrudColumn::init(string $label, ?string $name = null, $priority = null): self
CrudField::init(string $label, ?string $name = null, $width = null): self

有两个步骤的计划

  • 包括所有Backpack CRUD列、字段和过滤器
  • 将辅助类合并为一个。

目前还没有编写测试。

安装

通过Composer

$ composer require justinmoh/backpack-helper:~0.2

用法

use \JustinMoh\BackpackHelper\CrudHelper;
use \JustinMoh\BackpackHelper\Facades\Columns\DatetimeColumn;
use \JustinMoh\BackpackHelper\Facades\Columns\SelectColumn;
use \JustinMoh\BackpackHelper\Facades\Columns\TextColumn;
use \JustinMoh\BackpackHelper\Facades\Fields\RadioField;
use \JustinMoh\BackpackHelper\Facades\Fields\Select2FromArrayField;
use \JustinMoh\BackpackHelper\Facades\Fields\UploadMultipleField;
use \JustinMoh\BackpackHelper\Facades\Filters\Select2MultipleFilter;
use \JustinMoh\BackpackHelper\Facades\Filters\SimpleFilter;

// ...

protected function setupListOperation()
{
    // a datetime column with priority `1`
    DatetimeColumn::init('Date & Time Check In', 'datetime_check_in', 1)
        ->toColumn();

    // you can also separate the method chains.
    DatetimeColumn::label('Date & Time Check Out')->name('datetime_check_out')
        ->toColumn();

    // auto guessing `name` with `label`
    TextColumn::label('Name')->toColumn();

    // backpack's `select` column type
    SelectColumn::init('Category', 'category_id')
        ->entity('category')->attribute('display_name')->model(\App\Category::class)
        ->toColumn();
}

// ...

protected function setupCreateOperation()
{
    // a field with wrapperAttribute col-md-6 (or col-lg-6 ?)
    UploadMultipleField::init('Attach Documents', 'customer_documents', 6)
        ->toField();

    // an inline yes no radio button, disabled
    RadioField::init('Is Vip')->width(3)->inline()
        ->options(CrudHelper::YES_NO_OPTIONS)
        ->disabled()->toField();

    // select 2
    Select2FromArrayField::init('Room Type', 'room_type_id', 4)->required()
        ->options(\App\RoomType::all()->prepend('')->pluck('name','id')->toArray())
        ->toField();
}

// ...

protected function setupListOperation()
{
    SimpleFilter::init('Only New', 'status_new')
        ->query(function() {
            \CRUD::addClause('onlyNew');
        })->toFilter();

    Select2MultipleFilter::label('Select Room Type(s)')
        ->options(
            function () {
                return \App\RoomType::all()->pluck('name', 'id')->toArray();
            }
        )->query(
            function ($value) {
                \CRUD::addClause('whereInRoomTypes', json_decode($values));
            }
        )->toFilter();
}

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

测试

$ composer test

贡献

请参阅contributing.md以获取详细信息和一个待办事项列表。

安全

如果您发现任何安全相关的问题,请通过作者邮箱联系,而不是使用问题跟踪器。

致谢

许可证

许可证。请参阅许可证文件以获取更多信息。