AdmincpCommonTrait 后台应用类说明文档

AdmincpCommonTrait 说明文档

AdmincpCommonTrait 是一个用于后台管理的通用 Trait,提供了常见的增删改查(CRUD)操作、批处理、数据保存、更新等功能的封装。通过使用该 Trait,开发者可以快速构建后台管理功能,减少重复代码的编写。

1. 主要功能

1.1 添加数据 (do_adddone_add)

  • do_add: 用于显示添加数据的表单页面。
  • done_add: 用于处理添加数据的保存操作。
  • adding: 在添加数据时设置默认数据的回调方法。
  • added: 在保存添加数据时调用,用于处理数据。

1.2 编辑数据 (do_editdone_edit)

  • do_edit: 用于显示编辑数据的表单页面。
  • done_edit: 用于处理编辑数据的保存操作。
  • editing: 在编辑数据时设置默认数据的回调方法。
  • edited: 在保存编辑数据时调用,用于处理数据。

1.3 保存数据 (save)

  • save: 通用的数据保存方法,支持创建和更新操作。
  • presave: 在保存数据前处理数据,通常用于过滤非字段数据。
  • saving: 在保存数据时处理数据,适用于没有定义 save 方法的情况。
  • saved: 在保存数据后调用,用于处理保存后的逻辑。

1.4 删除数据 (done_delete)

  • done_delete: 用于删除数据。
  • deleting: 在删除数据时调用,用于处理删除前的逻辑。
  • deleted: 在删除数据后调用,用于处理删除后的逻辑。

1.5 批处理 (done_batch)

  • done_batch: 用于执行批处理操作,支持删除、属性更新、关键词处理等。
  • batching: 设置批处理对应的处理方法。
  • batched: 在批处理完成后调用,用于处理批处理结果。

1.6 更新数据 (done_update)

  • done_update: 用于更新数据。
  • updating: 在更新数据时调用,用于处理更新前的逻辑。
  • updated: 在更新数据后调用,用于处理更新后的逻辑。

1.7 其他功能

  • done_copy: 用于复制数据。
  • do_comment: 用于处理评论功能。
  • done_node: 用于获取节点下拉数据。
  • do_index: 用于显示管理列表页面。
  • index: 用于获取管理列表数据。
  • index_context: 用于设置列表页面的上下文数据。
  • index_where: 用于设置列表查询条件。
  • index_data: 用于处理列表数据。

2. 使用示例

2.1 添加数据

public function do_add($rs = []) {
    $model = $this->getModel();
    empty($rs) && $rs = $this->adding();
    include self::view('add');
}

protected function adding() {
    return ['default_field' => 'default_value'];
}

public function done_add(&$data = []) {
    $this->added($data);
    $this->presave($data);
    $ret = $this->save($data);
    $this->saved($data);
    return $ret;
}

2.2 编辑数据

public function do_edit() {
    $model = $this->getModel();
    $this->id or self::alert('请选择要编辑的项目');
    $this->id && $rs = $model::get($this->id);
    $this->editing($rs);
    return $this->do_add($rs);
}

protected function editing(&$rs = []) {
    $rs['field'] = 'new_value';
}

public function done_edit(&$data = []) {
    $this->edited($data);
    $this->presave($data);
    $ret = $this->save($data);
    $this->saved($data);
    return $ret;
}

2.3 删除数据

public function done_delete($ids = null) {
    $model = $this->getModel();
    $ids === null && $ids = $this->ids;
    $ids or self::alert('Please select items to delete');
    is_array($ids) or $ids = [$ids];
    $flag = $this->deleting($ids);
    if (is_null($flag) && $ids) {
        $model::delete($ids);
    }
    $ids && $this->deleted($ids);
    return ['action' => 'delete', 'id' => $ids];
}

2.4 批处理

public function done_batch() {
    $model = $this->getModel();
    $actions = [
        'dels' => [$this, 'done_delete'],
        'prop' => function ($ids, $data, $batch) use ($model) {
            $pid = $data['pid'];
            $model::update(compact('pid'), $ids);
        },
    ];
    $batching = (array)$this->batching();
    $actions = array_merge($actions, $batching);
    $result = AdmincpBatch::run($actions);
    $this->batched($result);
    return $result;
}

3. 钩子和回调

AdmincpCommonTrait 提供了多个钩子和回调方法,允许开发者在特定阶段插入自定义逻辑。例如:

  • saved: 在数据保存后调用,可以用于处理保存后的逻辑。
  • deleted: 在数据删除后调用,可以用于处理删除后的逻辑。
  • updated: 在数据更新后调用,可以用于处理更新后的逻辑。

4. 注意事项

  • 兼容性: 该 Trait 兼容 PHP 5,确保在 PHP 5 环境下也能正常运行。
  • 安全性: 在处理用户输入时,确保使用 Security::safeStr 等方法进行过滤,防止 SQL 注入等安全问题。
  • 扩展性: 通过重写 addingeditingsaving 等方法,可以灵活扩展功能。

5. 总结

AdmincpCommonTrait 是一个功能强大的后台管理工具,提供了丰富的 CRUD 操作和批处理功能。通过合理使用该 Trait,开发者可以快速构建高效、安全的后台管理系统。