定制 vasichmen/laravel-handbooks 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

vasichmen/laravel-handbooks

最新稳定版本:v1.0.0

Composer 安装命令:

composer require vasichmen/laravel-handbooks

包简介

Package Handbooks

README 文档

README

  • установить пакет
 composer require vasichmen/laravel-handbooks
  • подключить \Laravel\Handbooks\LaravelHandbooksServiceProvider::class в config\app.php
  • опубликовать конфиг
php artisan vendor:publish --provider="Laravel\Handbooks\LaravelHandbooksServiceProvider"
  • заполнить заготовку конфига handbooks.php.

  • Пример конфига:

[
    'route_prefix' => env('HANDBOOKS_ROUTE_PREFIX', ''),
    'global_middleware' => ['user-auth', 'local-auth'],
    'defaults' => [
        'middleware' => [
            'create' => ['can-create'], //мидлвары для создания по умолчанию, например can:manage_handbooks
            'update' => ['can-update'], //мидлвары для обновления по умолчанию, например can:manage_handbooks
            'delete' => ['can-delete'], //мидлвары для удаления по умолчанию, например can:manage_handbooks
            'view' => ['can-view'], //мидлвары для просмотра по умолчанию, например can:manage_handbooks
        ],
    ],
    'dynamic' => [
        'model_base_namespace' => '\\App\\Models\\',
        'repository_base_namespace' => '\\App\\Repositories\\',
        'default_select' => ['id', 'name'],
        'default_with' => [],
        'default_searchable_fields' => ['name'],
        'custom' => [
            //модели, которые находятся в других пространствах имен или нужны кастомные настройки
//            'model-code' => [
//                'model' => ModelClass::class,
//                'resource' => ModelResourceClass::class,
//                'repository' => ModelRepositoryClass::class,
//                'select' => ['id','name'],//массив полей, которые надо доставать для short-лист. По умолчанию id,name
//                'with' => [], //массив отношений, которые надо доставать для short-лист. По умолчанию пустой
//                'searchable_fields' => [], //массив полей, по которым возможен поиск
//            ],
        ]
    ],
    'crud' => [
        'functional-area' => [
            'repository' => \App\Repositories\FunctionalAreaRepository::class,
            'resource' => \App\Http\Resources\FunctionalAreaResource::class,
            'create_request' => \App\Http\Requests\Handbook\Create\CreateFunctionalAreaRequest::class,
            'update_request' => \App\Http\Requests\Handbook\Update\UpdateFunctionalAreaRequest::class,
            'create_dto' => \App\DTO\Request\Handbook\FunctionalAreaHandbookDTO::class,
            'update_dto' => \App\DTO\Request\Handbook\FunctionalAreaHandbookDTO::class,
            'searchable_fields'=>['name'],
            'with'=>['detail'=>['system', 'architectManagers'],'list'=>['system']]
        ]
    ],
    'enums'=>[
        ComponentTypeEnum::class,
        MicroserviceCodeEnum::class,
    ]   
]
  • Пример реквеста создания:
class CreateFunctionalAreaRequest extends AbstractRequest
{
    protected ?string $dtoClassName = FunctionalAreaHandbookDTO::class;

    public function rules()
    {
        return [
            'name' => ['required', 'string', 'max:255', new Unique(FunctionalArea::class, 'name')],
            'architect_managers' => ['array', 'sometimes'],
            'architect_managers.*' => ['uuid', new Exists(User::class, 'id')],
            'corp_architects' => ['array', 'sometimes'],
            'corp_architects.*' => ['uuid', new Exists(User::class, 'id')],
        ];
    }
}
  • Пример реквеста обновления:
class UpdateFunctionalAreaRequest extends CreateFunctionalAreaRequest
{
    protected ?string $dtoClassName = FunctionalAreaHandbookDTO::class;

    public function rules()
    {
        return [
            ...parent::rules(),
            'name' => [
                'sometimes',
                'string',
                'max:255',
                (new Unique(FunctionalArea::class, 'name'))->ignore($this->getRouteParameter('handbookId'))
            ],
        ];
    }
}
  • Если в проекте используются кастомные связи BelongsToMany, то такие связи могут реализовать интерфейс ProvidesUniqueRelatedKeys.

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-11-07