7.6 加载、删除、创建、保存实体
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
对于定义的实体类型,我们最好为其实现增删改查等API函数,方便别处调用:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
对于定义的实体类型,我们最好为其实现增删改查等API函数,方便别处调用:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
在我们的菜单项里面,用到了权限'administer breadcrumbs',现在就让我们定义这个权限,向module文件中添加以下代码:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们在hook_entity_info里面,有这样的设置“'path' => 'admin/structure/breadcrumbs'”,
这里所用的路径,我们需要在hook_menu里面定义一下,现在我们就来实现这个路径。向module文件中添加以下代码:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
接下来,我们创建breadcrumb2.module文件,首先输入以下代码:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
和开发普通的模块一样,当需要存储数据的时候,我们需要定义自己的数据库表,这个时候,就需要定义Schema了。这个我们以前也讲过了,来看这里的定义。首先创建breadcrumb2.install文件,在里面输入以下内容:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们创建一个breadcrumb2.info文件,输入以下内容:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
其实2011年的时候,自己就想编写一个模块,定义一个实体类型,最初的想法是把区块改造为实体,我在官方网站上面搜索,发现已经有了这样的一个模块了,bean,就是这个时候冒出来的。后来想把Contact模块,重新实现为实体的形式,不过发现了有个Entity Forms模块,可以做这件事情。再往后,就想不出来哪些东西可以改造为实体了。一直到搭建网上书店时,解决面包屑问题的时候,有了将面包屑改造为实体的想法,并且在现有的模块当中,没有这样的技术实现。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
这个模块还提供了一个Entity对象,如果我们要定义一个新的实体类型时,只需要继承这个对象就可以了,这个对象帮助我们实现了完整的CRUD操作。
在Entity API里面,所有的bundle,这里说的是Bundle本身,也都被处理成为了实体,这是一种可以导入、导出的实体。在Drupal核心中,内容类型的添加、编辑,是没有采用实体的形式的。Entity API模块,在这里走的更远,Bundle本身也处理成为了实体。我们看Profile2模块,在profile2_entity_info里面,可以找到这段代码: