## 可编辑单行文本 如果希望能在数据表格上直接编辑数据,可以设置字段类型为`text.edit` ~~~ // 读取用户数据 $data_list = Db::name('admin_user')->select(); // 使用ZBuilder构建数据表格 return ZBuilder::make('table') ->addColumn('username', '用户名', 'text.edit') ->setRowList($data_list) // 设置表格数据 ->fetch(); ~~~ 点击单元格数据即可快速编辑。 ![](https://box.kancloud.cn/7f378ec743e039b708db2ed5c53ee8f4_357x113.png) 要使用快捷编辑功能,必须满足以下两点要求: >[info]1. 数据库要存在名字为“`表前缀_当前模块名_当前控制器名`”的数据表,如果不存在,需要使用`setTableName()`方法另外指定。 >2. 字段名是数据表真实存在的。 比如cms模块的index控制器的index方法中建立一张数据表格 ~~~ <?php namespace app\cms\admin; use app\admin\controller\Admin; use app\common\builder\ZBuilder; class Index extends Admin { public function index() { return ZBuilder::make('table') ->addColumn('title', '标题', 'text.edit') ->fetch(); } } ~~~ 第一,数据库中必须有名为`dp_cms_index`的数据表(假设表前缀为`dp_`)。 第二,`dp_cms_index`表中有个字段为`title`。 只要满足以上两个条件,即可正常使用可编辑单行文本。除此之外,textarea.edit、password、date.edit等可以快捷编辑的类型都需要满足以上两个条件。 假如操作的数据表不是`dp_cms_index`,那可以使用`setTableName()`方法,比如 ~~~ <?php namespace app\cms\admin; use app\admin\controller\Admin; use app\common\builder\ZBuilder; class Index extends Admin { public function index() { return ZBuilder::make('table') ->addColumn('title', '标题', 'text.edit') ->setTableName('cms_article') ->fetch(); } } ~~~ 那么快捷编辑所操作的数据表则是`dp_cms_article`。 ### 指定真实字段名 某些情况下,可能字段名是另外添加的,并非表中真实的字段,比如下面的代码,`title_display`字段实际并非表中的真实字段,而是通过另外处理之后,自定义的字段名,它其实对应表中的`name`字段。 ~~~ ->addColumn('title_display', '标题', 'text.edit') ~~~ 那么这么设置,肯定无法编辑,因为表中根本没有`title_display`字段,那如何才能正确的去修改实际的字段名`name`呢。只需像下面那样,用“|”定义实际字段名即可。 ~~~ ->addColumn('title_display|name', '标题', 'text.edit') ~~~ >[danger] 注意,只有可编辑的字段(text.edit、textarea.text、select等)才支持指定字段名这种方法。 ### 指定表名 如果修改的字段不在当前表,那么除了可以使用上面说到的用`setTableName()`方法指定全局表名外,还可以单独对某个字段指定其他表名。 ~~~ ->addColumn('title_display|admin_config.name', '标题', 'text.edit') ~~~ 以上表示编辑的时候,实际编辑的是`admin_config`表的`name`字段。