RBAC权限的递归遍历,在ul标签里面,如何有层级关系
<div class="form-group">
<label class="col-sm-3 control-label">权限列表:</label>
<div class="col-sm-8">
<volist name="data_pri" id="vo" >
<ul class="checktree">
<li>
<input id="administration" type="checkbox" /><label for="administration">{$vo.pri_name}</label>
<ul>
<volist name="data_pri1" id="vo1" >
<li>
<if condition="$vo.id == $vo1.parent_id">
<input id="president" type="checkbox" /><label for="president">{$vo1.pri_name}</label>
</if>
<ul>
<li>
<input type="checkbox" /><label for="manager1">添加商品</label>
<input type="checkbox" /><label for="manager1">编辑商品</label>
<input type="checkbox" /><label for="manager1">删除商品</label>
</li>
</ul>
</li>
</volist>
</ul>
</li>
</ul>
</volist>
</div>
</div>
public function add_list()
{
$model = D('Privilege');
//顶级分类
$where="parent_id=0";
$data_pri=$model->where($where)->select();
//一级分类
$where="level=1";
$data_pri1=$model->where($where)->select();
//二级分类
$where="level=2";
$data_pri2=$model->where($where)->select();
$data = $model->search();
$this->assign(array(
'data' => $data['data'],
'page' => $data['page'],
'data_pri'=>$data_pri,
'data_pri1'=>$data_pri1,
'data_pri2'=>$data_pri2
));
// 设置页面中的信息
$this->assign(array(
'_page_title' => '列表',
'_page_btn_name' => '添加',
'_page_btn_link' => U('add'),
));
$this->display();
}
以下是我的样式
<script>
(function($){
$.fn.checktree = function(){
$(':checkbox').on('click', function (event){
event.stopPropagation();
var clk_checkbox = $(this),
chk_state = clk_checkbox.is(':checked'),
parent_li = clk_checkbox.closest('li'),
parent_uls = parent_li.parents('ul');
parent_li.find(':checkbox').prop('checked', chk_state);
parent_uls.each(function(){
parent_ul = $(this);
parent_state = (parent_ul.find(':checkbox').length == parent_ul.find(':checked').length);
parent_ul.siblings(':checkbox').prop('checked', parent_state);
});
});
};
}(jQuery));
</script>
<style>
body{
width: 1100px;
margin: 0 auto;
}
ul{
list-style-type: none;
margin: 3px;
}
ul.checktree li:before{
height: 1em;
width: 12px;
border-bottom: 1px dashed;
content: "";
display: inline-block;
top: -0.3em;
}
ul.checktree li{
border-left: 1px dashed;
}
ul.checktree li:last-child:before {
border-left: 1px dashed;
}
ul.checktree li:last-child{
border-left: none;
}
</style>
我运行是在thinkphp3.2.3版本下的,能否大伙能帮我遍历的时候,我哪里出问题了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
显示的时候在 pri_name 前面添加 level个空格或者其它符号 就可以了