select(); // 使用ZBuilder构建数据表格 return ZBuilder::make("" />
牛骨文教育服务平台(让学习变的简单)

可编辑单行文本

如果希望能在数据表格上直接编辑数据,可以设置字段类型为text.edit

// 读取用户数据
$data_list = Db::name("admin_user")->select();
        
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
    ->addColumn("username", "用户名", "text.edit")
    ->setRowList($data_list) // 设置表格数据
    ->fetch();

点击单元格数据即可快速编辑。

要使用快捷编辑功能,必须满足以下两点要求:

  1. 数据库要存在名字为“表前缀_当前模块名_当前控制器名”的数据表,如果不存在,需要使用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字段。