正在加载文档...
AdmincpCommonTrait 后台应用类说明文档
AdmincpCommonTrait 说明文档
AdmincpCommonTrait
是一个用于后台管理的通用 Trait,提供了常见的增删改查(CRUD)操作、批处理、数据保存、更新等功能的封装。通过使用该 Trait,开发者可以快速构建后台管理功能,减少重复代码的编写。
1. 主要功能
1.1 添加数据 (do_add
和 done_add
)
do_add
: 用于显示添加数据的表单页面。done_add
: 用于处理添加数据的保存操作。adding
: 在添加数据时设置默认数据的回调方法。added
: 在保存添加数据时调用,用于处理数据。
1.2 编辑数据 (do_edit
和 done_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 注入等安全问题。 - 扩展性: 通过重写
adding
、editing
、saving
等方法,可以灵活扩展功能。
5. 总结
AdmincpCommonTrait
是一个功能强大的后台管理工具,提供了丰富的 CRUD 操作和批处理功能。通过合理使用该 Trait,开发者可以快速构建高效、安全的后台管理系统。