可编辑单行文本
如果希望能在数据表格上直接编辑数据,可以设置字段类型为text.edit
// 读取用户数据
$data_list = Db::name("admin_user")->select();
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("username", "用户名", "text.edit")
->setRowList($data_list) // 设置表格数据
->fetch();
点击单元格数据即可快速编辑。
要使用快捷编辑功能,必须满足以下两点要求:
- 数据库要存在名字为“
表前缀_当前模块名_当前控制器名
”的数据表,如果不存在,需要使用setTableName()
方法另外指定。
>2. 字段名是数据表真实存在的。
比如cms模块的index控制器的index方法中建立一张数据表格
<?php
namespace appcmsadmin;
use appadmincontrollerAdmin;
use appcommonuilderBuilder;
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 appcmsadmin;
use appadmincontrollerAdmin;
use appcommonuilderBuilder;
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")
注意,只有可编辑的字段(text.edit、textarea.text、select等)才支持指定字段名这种方法。
指定表名
如果修改的字段不在当前表,那么除了可以使用上面说到的用setTableName()
方法指定全局表名外,还可以单独对某个字段指定其他表名。
->addColumn("title_display|admin_config.name", "标题", "text.edit")
以上表示编辑的时候,实际编辑的是admin_config
表的name
字段。