gitsccit/web-skeleton

CakePHP 骨架插件

安装量: 5,209

依赖项: 2

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

公开问题: 0

类型:cakephp-plugin

dev-master 2024-09-17 06:31 UTC

This package is auto-updated.

Last update: 2024-09-17 06:31:23 UTC


README

此插件为通用Web应用程序提供了一个起点,功能包括CRUD操作、文件处理、HTTP请求日志记录、软删除、自动模板化等。

安装

  • 使用composer安装

    composer require gitsccit/web-skeleton
    
  • 加载插件

    bin/cake plugin load Skeleton
    
  • 运行迁移和种子

    bin/cake migrations migrate -p Skeleton
    bin/cake migrations seed -p Skeleton
    

使用方法

ApiHandler

应用程序服务器的API客户端,包含与App服务器通信的方法。

将这些条目添加到 app_local.php

Urls => [
    'apps' => '...', // App server url, this could be dev/test/prod.
    'refreshCallback' => '...',  // The endpoint that App server will call when an update is detected, defaults to '/pages/clear-cache'.
],
Security => [
    'appServerApiToken' => '...' // The token used to access App server API.
],

Bake

烘焙时使用选项 -t Skeleton。例如,bin/cake bake all users -t Skeleton

行为

当前用户

对于所有传入的保存请求,此行为将请求数据中的 user_id 设置为 Session::read('Auth.User.id')

可过滤的

允许通过在URL中传递查询参数来过滤表。

  • 将可过滤的行为添加到您想要过滤的表。

    $this->addBehavior('Skeleton.Filterable', [
        'fields' => [
            'title', // value defaults to ['contain']
            'tag_count' => ['lte'],
            'Tags__name' => ['contains', 'exact'],
        ],
        'names' => [
            'Tags__name' => 'Tag',
        ],
    ]);
    

    fields 是必需的,您可以通过定义 names 来定义字段的自定义名称。

  • 在请求URL中设置查询参数。例如

    • /pages?title=skeleton 将返回包含 'skeleton' 的页面条目。
    • /pages?title__exact=skeleton 将返回标题正好为 'skeleton' 的页面条目。
    • /pages?tag_count__lte=5 将返回标签计数小于或等于5的页面条目。
    • /pages?Tags__name=plugins 将返回标签名称包含 'plugins' 的页面条目。

支持的运算符有 containsexactgtgteltltene。默认为 contains,如果查询参数中没有指定操作。

CRUD

  • AppController 继承 \Skeleton\Controller\AppController

  • 所有HTTP响应都将基于请求中的 Accept 标头来解析,即如果 Accept 标头设置为 application/json,则响应将进行JSON序列化。

  • 为模板使用设置了一些方便的视图变量。有关列表,请参阅下面的 Template 部分。

主/副本数据库连接

  • default 数据源配置为主数据库,将 replica 配置为副本数据库。

  • 在引导过程中从主/副本创建插件的数据源配置。例如,为插件 Apps 创建 appsapps_replica 数据源配置,基于 defaultreplica 配置。

  • DataSource 事件监听器重新配置 save()delete() 以使用 default 连接,并使用 find() 使用 {*_}replica 连接。

枚举选项

在您的ORM表对象中使用 EnumTrait,并使用 getEnumOptions() 来读取该表中的枚举字段。

全局辅助函数

config/functions.php 包含全局可用的辅助函数。例如,

  • timestamp() => ‘2019-10-03 16:00:00’
  • is_assoc([‘key’ => ‘value’]) => true | is_assoc([‘JustValue’]) => false

请求清理

RequestSanitationMiddleware 将所有用户提交字段中的信用卡号码替换为 X。您可以在中间件中定义有效信用卡字段的列表。

软删除

  • 在您希望实现软删除的数据库表中创建可空的 deleted_at 列,数据类型为 timestamp

  • 在您的ORM表对象中使用SoftDeleteTrait。或者,您可以bake ORM表:bin/cake bake model ModelName -t Skeleton

  • 如果您希望级联软删除,请将这些选项添加到表关联中。

    'cascadeCallbacks' => true,
    'dependent' => true
    

    例如,如果您希望删除一个被删除用户的所有文章,在UsersTable.initialize中,您的表关联将如下所示:

    $this->hasMany('Users', [
        'foreignKey' => 'user_id',
        'cascadeCallbacks' => true,
        'dependent' => true
    ]);
    

模板

当您在控制器中使用Crud组件方法来加载数据时,以下变量将在视图中可用。

  • accessibleFields 用户可分配的字段。(仅在动作是addedit之一时设置)
  • className 当前控制器名称。
  • displayField 当前表对象的显示字段。
  • entity / entities 仅当您使用后备模板时设置。
  • title 当前页面的用户友好标题。

模板抽象

  • /Template/{FallbackTemplateFolder}中创建模板文件。
  • 在控制器中设置fallbackTemplatePath选项。
    $crud = [
        'fallbackTemplatePath` => {FallbackTemplateFolder}
    ];
    
    默认情况下,后备模板路径设置为/Template/Common
  • 从Cake指定的模板文件夹中删除您希望由后备模板覆盖的模板。

示例

  • /Template/Admin中创建index.phpadd.phpview.phpedit.php
  • UsersController中设置fallbackTemplatePath选项。
    $crud = [
        'fallbackTemplatePath` => 'Admin'
    ];
    
  • /Template/Users中删除index.phpview.php。现在,indexview方法将回退到/Admin中的对应模板,而addedit将使用/Users中的模板。

视图助手

要加载助手,请在AppViewinitialize()方法中添加$this->loadHelper('Skeleton.{helperName}');

UtilsHelper

实用工具,帮助您编写模板文件。

PhoneHelper

将电话号码解析为用户友好的格式。