之前没描述清楚,在后面打开菜单的时候会出现以下情况,如我点击产品信息管理,在后台主区域会打开产品信息页面,如下图: 之后点击其他菜单,如点击产品评论页面,此时产品评论页面会覆盖产品信息页面,而不会打开新的tab页,如下图:
你这样说,你认为别人能看明白吗?描述完成,想一想,是否别人能清楚你的意思、
问题已经找到,查看了一下源码是在创建菜单时把rel都写成了page1导致的,代码如下 改成一下方式可以使用: 最终效果如下:
@xi_qing #2楼 这样不行的,回存在问题, 由于fecshop的admin部分,为了更快的增删改查,这个部分是封装的,写一个增删改查带有排序搜索分页功能就比较快。 这样,很多tab的html部分的class和div结构会很类似,因此 ,会存在执行冲突,tab2的js会操作tab1的html,譬如一些ajax操作需要修改内容。
因此不要这样改。
@xi_qing [#2楼](#comment2) 譬如:
后台对page页的列表的展示部分: https://github.com/fecshop/yii2_fecshop/blob/master/app/appadmin/modules/Cms/block/article/Index.php
大致只需要重写这两个方法就出来列表的
public function getSearchArr() { $data = [ [ // selecit的Int 类型 'type'=>'select', 'title'=>'状态', 'name'=>'status', 'columns_type' =>'int', // int使用标准匹配, string使用模糊查询 'value'=> [ // select 类型的值 1=>'激活', 2=>'关闭', ], ], [ // 字符串类型 'type'=>'inputtext', 'title'=>'标题', 'name'=>'title', 'columns_type' =>'string', ], [ // 时间区间类型搜索 'type'=>'inputdatefilter', 'name'=> 'created_at', 'columns_type' =>'int', 'value'=>[ 'gte'=>'用户创建时间开始', 'lt' =>'用户创建时间结束', ], ], ]; return $data; } /** * config function ,return table columns config. */ public function getTableFieldArr() { $table_th_bar = [ [ 'orderField' => $this->_primaryKey, 'label' => 'ID', 'width' => '50', 'align' => 'center', ], [ 'orderField' => 'title', 'label' => '标题', 'width' => '50', 'align' => 'left', 'lang' => true, ], [ 'orderField' => 'created_user_id', 'label' => '创建人', 'width' => '110', 'align' => 'center', ], [ 'orderField' => 'created_at', 'label' => '创建时间', 'width' => '110', 'align' => 'center', 'convert' => ['int' => 'datetime'], ], [ 'orderField' => 'updated_at', 'label' => '更新时间', 'width' => '110', 'align' => 'center', 'convert' => ['int' => 'datetime'], ], ]; return $table_th_bar; }
这种方式也是参考的magento的封装。不过magento的封装,封的更厉害,导致灵活性不高。当然,我这种封装方式,灵活性方面也有点欠缺。
@Terry #3楼 明白你的意思,刚看了一下dom结构,确实会存在你说的问题。那是否意味着目前的主tab只能打开一个菜单?
@xi_qing #5楼 嗯,是这个意思,如果两个页面的div标签全部不一样,不存在冲突,就没有问题了。
@Terry #6楼 明白了,先按照打开一个的吧