Zurmo(十一)Relation之1:n

来源:互联网 发布:netcat windows 使用 编辑:程序博客网 时间:2024/04/28 04:54

前言:Zurmo数据库表之间的一对多关系是有两种实现的形式。

  1. 一种是以OwnedCustomField的形式,这种针对的是关联表的值不多的情况的,比如满意,不满意,一般这种。
    详情请看博客:

    http://blog.csdn.net/tyrannoaurus/article/details/53668286

  2. 一种以新建一个实体model的形式,将关系类映射为一个类,针对的关联表的值很多的情况。Zurmo的具体实现是采取弹框(Modal)的形式。

下面针对第二种进行叙述:
页面的样子:
这里写图片描述
在新建产品的时候,选一个account.

1.在product的model里的relations要写上关系:

 'account'           => array(static::HAS_ONE, 'Account'),

在elements里写上:

  'account'         => 'Account',

在xxxEditAndDetailsView.php写上:
这里写图片描述

至此在页面上就可以显示,不过那个modal还不能显示。

2.要在你的accounts/elements 下新建一个AccountElement.php文件,这个类就是重写你的那个modal里的list列表的数据的controller.在父类 ModelElement 里有很多属性,很清楚描述了。
之后你根据自己定义的controller和action ,新建对应的文件和方法。默认给的是 actionmodalList ,这个方法就是输出那个modal.

3.
这里写图片描述
在util下新建一个 xxxModalSearchListControllerUtil.php文件,这个文件里重写 ModalSearchListControllerUtil 类的所有方法,将里面的 ModalListView ModalSearchAndListView SearchView 改写成自己要新建的文件的名字。在view/ 下新建对应的文件:
这里写图片描述

在这里文件的方法设置好对应的参数。

4.在 xxxModalListView 里设置的属性就是account的字段,但是这些字段只是一些基本的字段,如果你要在modal里显示一些其他表的字段(和account有关联的),还有做其它的操作。

5.在setAjaxModeAndRenderModalSearchList 方法里要多传一个参数,同时在adapters/ 还要新建一个文件,这个文件就是配置相关联的那个字段的信息.

6.之后你可以存到数据库了(表已新建好,有xxid),但是在details页面只能显示account的id ,怎么样换成自定义的字段还不清楚。

7.这个功能的还没有完全掌握,欢迎找我交流!如有不对,请指正!

8.文章有些文件的名字和图片里的类的名字有些出入,比如那个CarsModalListView 我只是找了个例子,自己实际操作的时候根据自己的情况自定义就可以了,希望不要被我误解了。

0 0
原创粉丝点击